src/Flexy/FrontBundle/Entity/MenuItem.php line 20

  1. <?php
  2. namespace App\Flexy\FrontBundle\Entity;
  3. use ApiPlatform\Core\Annotation\ApiResource;
  4. use App\Flexy\FrontBundle\Repository\MenuItemRepository;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Doctrine\Common\Collections\Collection;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Gedmo\Mapping\Annotation as Gedmo;
  9. use Gedmo\Translatable\Translatable;
  10. use App\Entity\Link;
  11. use App\Entity\LinkType;
  12. use Gedmo\SoftDeleteable\Traits\SoftDeleteableEntity;
  13. #[ApiResource]
  14. #[ORM\Entity(repositoryClassMenuItemRepository::class)]
  15. #[Gedmo\SoftDeleteable(fieldName'deletedAt'timeAwarefalsehardDeletetrue)]
  16. #[ORM\Cache(usage:"NONSTRICT_READ_WRITE",region:"append_depend")]
  17. class MenuItem implements \Stringable,Translatable
  18. {
  19.     use SoftDeleteableEntity;
  20.     #[ORM\Id]
  21.     #[ORM\GeneratedValue]
  22.     #[ORM\Column(type'integer')]
  23.     private $id;
  24.     #[ORM\Column(type'string'length255)]
  25.     #[Gedmo\Translatable]
  26.     private ?string $title null;
  27.     #[ORM\Column(type'string'length255nullabletrue)]
  28.     private $cssClasses;
  29.     #[ORM\Column(type'string'length255)]
  30.     private string $type "url";
  31.     #[ORM\Column(type'string'length255nullabletrue)]
  32.     private ?string $routeName null;
  33.     #[ORM\Column(type'string'length255nullabletrue)]
  34.     private ?string $routeParam null;
  35.     #[ORM\Column(type'string'length255nullabletrue)]
  36.     private ?string $routeParamValue null;
  37.     #[ORM\Column(type'string'length255nullabletrue)]
  38.     private ?string $url null;
  39.     #[ORM\ManyToOne(targetEntityMenu::class, inversedBy'menuItems')]
  40.     #[ORM\JoinColumn(nullablefalse)]
  41.     private ?\App\Flexy\FrontBundle\Entity\Menu $menu null;
  42.     #[ORM\Column(type'string'length255nullabletrue)]
  43.     private ?string $role null;
  44.      #[ORM\Column(type'string'length255nullabletrue)]
  45.     private $anchor;
  46.     #[ORM\ManyToOne(targetEntityMenuItem::class, inversedBy'subMenuItems'cascade: ['persist''remove'])]
  47.     private ?\App\Flexy\FrontBundle\Entity\MenuItem $parentMenuItem null;
  48.     #[ORM\OneToMany(targetEntityMenuItem::class, mappedBy'parentMenuItem'cascade: ['persist''remove'])]
  49.     private \Doctrine\Common\Collections\Collection|array $subMenuItems;
  50.     /**
  51.      * @Gedmo\SortablePosition
  52.      */
  53.     #[ORM\Column(type'integer'nullabletrue)]
  54.     private $position;
  55.     #[ORM\ManyToOne(targetEntityLink::class, cascade: ['persist'])]
  56.     #[ORM\JoinColumn(nullabletrueonDelete'CASCADE')]
  57.     private $link=null;
  58.     #[ORM\ManyToOne(targetEntityLinkType::class, cascade: ['persist'])]
  59.     #[ORM\JoinColumn(nullabletrueonDelete'CASCADE')]
  60.     private $linkType=null;
  61.     #[ORM\Column(type'json'nullabletrue)]
  62.     private $attributes = [];
  63.     #[ORM\Column(length255,type'string'nullabletrue)]
  64.     private ?string $linkCssClasses null;
  65.     #[ORM\Column(length255,type'string'nullabletrue)]
  66.     private ?string $hideIfRole;
  67.         /**
  68.      * Used locale to override Translation listener`s locale
  69.      * this is not a mapped field of entity metadata, just a simple property
  70.      */
  71.     #[Gedmo\Locale]
  72.     private $locale;
  73.     
  74.     public function __construct()
  75.     {
  76.         $this->subMenuItems = new ArrayCollection();
  77.     }
  78.     public function __toString(): string
  79.     {
  80.         return (string) $this->getTitle();
  81.     }
  82.     public function getId(): ?int
  83.     {
  84.         return $this->id;
  85.     }
  86.     public function getTitle(): ?string
  87.     {
  88.         return $this->title;
  89.     }
  90.     public function setTitle(string $title): self
  91.     {
  92.         $this->title $title;
  93.         return $this;
  94.     }
  95.     public function getType(): ?string
  96.     {
  97.         return $this->type;
  98.     }
  99.     public function setType(string $type): self
  100.     {
  101.         $this->type $type;
  102.         return $this;
  103.     }
  104.     public function getRouteName(): ?string
  105.     {
  106.         return $this->routeName;
  107.     }
  108.     public function setRouteName(?string $routeName): self
  109.     {
  110.         $this->routeName $routeName;
  111.         return $this;
  112.     }
  113.     public function getRouteParam(): ?string
  114.     {
  115.         return $this->routeParam;
  116.     }
  117.     public function setRouteParam(?string $routeParam): self
  118.     {
  119.         $this->routeParam $routeParam;
  120.         return $this;
  121.     }
  122.     public function getRouteParamValue(): ?string
  123.     {
  124.         return $this->routeParamValue;
  125.     }
  126.     public function setRouteParamValue(?string $routeParamValue): self
  127.     {
  128.         $this->routeParamValue $routeParamValue;
  129.         return $this;
  130.     }
  131.     public function getUrl(): ?string
  132.     {
  133.         return $this->url;
  134.     }
  135.     public function setUrl(?string $url): self
  136.     {
  137.         $this->url $url;
  138.         return $this;
  139.     }
  140.     public function getMenu(): ?Menu
  141.     {
  142.         return $this->menu;
  143.     }
  144.     public function setMenu(?Menu $menu): self
  145.     {
  146.         $this->menu $menu;
  147.         return $this;
  148.     }
  149.     public function getRole(): ?string
  150.     {
  151.         return $this->role;
  152.     }
  153.     public function setRole(?string $role): self
  154.     {
  155.         $this->role $role;
  156.         return $this;
  157.     }
  158.     public function getParentMenuItem(): ?self
  159.     {
  160.         return $this->parentMenuItem;
  161.     }
  162.     public function setParentMenuItem(?self $parentMenuItem): self
  163.     {
  164.         $this->parentMenuItem $parentMenuItem;
  165.         return $this;
  166.     }
  167.     /**
  168.      * @return Collection<int, self>
  169.      */
  170.     public function getSubMenuItems(): Collection
  171.     {
  172.         return $this->subMenuItems;
  173.     }
  174.     public function addSubMenuItem(self $subMenuItem): self
  175.     {
  176.         if (!$this->subMenuItems->contains($subMenuItem)) {
  177.             $this->subMenuItems[] = $subMenuItem;
  178.             $subMenuItem->setParentMenuItem($this);
  179.         }
  180.         return $this;
  181.     }
  182.     public function removeSubMenuItem(self $subMenuItem): self
  183.     {
  184.         if ($this->subMenuItems->removeElement($subMenuItem)) {
  185.             // set the owning side to null (unless already changed)
  186.             if ($subMenuItem->getParentMenuItem() === $this) {
  187.                 $subMenuItem->setParentMenuItem(null);
  188.             }
  189.         }
  190.         return $this;
  191.     }
  192.     /**
  193.      * Get the value of anchor
  194.      */ 
  195.     public function getAnchor()
  196.     {
  197.         return $this->anchor;
  198.     }
  199.     /**
  200.      * Set the value of anchor
  201.      *
  202.      * @return  self
  203.      */ 
  204.     public function setAnchor($anchor)
  205.     {
  206.         $this->anchor $anchor;
  207.         return $this;
  208.     }
  209.     /**
  210.      * Get the value of cssClasses
  211.      */ 
  212.     public function getCssClasses()
  213.     {
  214.         return $this->cssClasses;
  215.     }
  216.     /**
  217.      * Set the value of cssClasses
  218.      *
  219.      * @return  self
  220.      */ 
  221.     public function setCssClasses($cssClasses)
  222.     {
  223.         $this->cssClasses $cssClasses;
  224.         return $this;
  225.     }
  226.     /**
  227.      * Get the value of link
  228.      */ 
  229.     public function getLink()
  230.     {
  231.         return $this->link;
  232.     }
  233.     /**
  234.      * Set the value of link
  235.      *
  236.      * @return  self
  237.      */ 
  238.     public function setLink($link)
  239.     {
  240.         $this->link $link;
  241.         return $this;
  242.     }
  243.     /**
  244.      * Get the value of position
  245.      */ 
  246.     public function getPosition()
  247.     {
  248.         return $this->position;
  249.     }
  250.     /**
  251.      * Set the value of position
  252.      *
  253.      * @return  self
  254.      */ 
  255.     public function setPosition($position)
  256.     {
  257.         $this->position $position;
  258.         return $this;
  259.     }
  260.     /**
  261.      * Get the value of linkType
  262.      */ 
  263.     public function getLinkType()
  264.     {
  265.         return $this->linkType;
  266.     }
  267.     /**
  268.      * Set the value of linkType
  269.      *
  270.      * @return  self
  271.      */ 
  272.     public function setLinkType($linkType)
  273.     {
  274.         $this->linkType $linkType;
  275.         return $this;
  276.     }
  277.     /**
  278.      * Get the value of attributes
  279.      */ 
  280.     public function getAttributes() 
  281.     {
  282.         return (array)$this->attributes;
  283.     }
  284.     /**
  285.      * Set the value of attributes
  286.      *
  287.      * @return  self
  288.      */ 
  289.     public function setAttributes($attributes)
  290.     {
  291.         $this->attributes $attributes;
  292.         return $this;
  293.     }
  294.     public function getLinkCssClasses(): ?string
  295.     {
  296.         return $this->linkCssClasses;
  297.     }
  298.     public function setLinkCssClasses(?string $linkCssClasses): self
  299.     {
  300.         $this->linkCssClasses $linkCssClasses;
  301.         return $this;
  302.     }
  303.     public function getHideIfRole(): ?string
  304.     {
  305.         return $this->hideIfRole;
  306.     }
  307.     public function setHideIfRole(?string $hideIfRole): self
  308.     {
  309.         $this->hideIfRole $hideIfRole;
  310.         return $this;
  311.     }
  312.     public function setTranslatableLocale($locale)
  313.     {
  314.         $this->locale $locale;
  315.     }
  316.    
  317. }