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

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