src/Entity/Slide.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\SlideRepository;
  4. use Doctrine\Common\Collections\ArrayCollection;
  5. use Doctrine\Common\Collections\Collection;
  6. use Doctrine\ORM\Mapping as ORM;
  7. use Sylius\Component\Core\Model\ImageInterface;
  8. use Sylius\Component\Core\Model\ImagesAwareInterface;
  9. use Sylius\Component\Resource\Model\ResourceInterface;
  10. use Symfony\Component\Validator\Constraints as Assert;
  11. /**
  12.  * @ORM\Entity(repositoryClass=SlideRepository::class)
  13.  */
  14. class Slide implements ResourceInterfaceImagesAwareInterface
  15. {
  16.     /**
  17.      * @ORM\Id
  18.      * @ORM\GeneratedValue
  19.      * @ORM\Column(type="integer")
  20.      */
  21.     private $id;
  22.     /**
  23.      * @Assert\NotBlank()
  24.      * @ORM\Column(type="string", length=255)
  25.      */
  26.     private $title;
  27.     /**
  28.      * @Assert\NotBlank()
  29.      * @ORM\Column(type="text", nullable=true)
  30.      */
  31.     private $content;
  32.     /**
  33.      * @ORM\Column(type="string", length=255, nullable=true)
  34.      */
  35.     private $url;
  36.     /**
  37.      * @ORM\OneToMany(targetEntity=SlideImage::class, mappedBy="owner", cascade={"all"}, orphanRemoval=true)
  38.      */
  39.     private $images;
  40.     public function __construct()
  41.     {
  42.         $this->images = new ArrayCollection();
  43.         $this->addImage(new SlideImage());
  44.     }
  45.     public function getId(): ?int
  46.     {
  47.         return $this->id;
  48.     }
  49.     public function getTitle(): ?string
  50.     {
  51.         return $this->title;
  52.     }
  53.     public function setTitle(string $title): self
  54.     {
  55.         $this->title $title;
  56.         return $this;
  57.     }
  58.     public function getContent(): ?string
  59.     {
  60.         return $this->content;
  61.     }
  62.     public function setContent(?string $content): self
  63.     {
  64.         $this->content $content;
  65.         return $this;
  66.     }
  67.     public function getUrl(): ?string
  68.     {
  69.         return $this->url;
  70.     }
  71.     public function setUrl(?string $url): self
  72.     {
  73.         $this->url $url;
  74.         return $this;
  75.     }
  76.     /**
  77.      * @return Collection<int, SlideImage>
  78.      */
  79.     public function getImages(): Collection
  80.     {
  81.         return $this->images;
  82.     }
  83.     public function addImage(ImageInterface $image): void
  84.     {
  85.         if (!$this->images->contains($image)) {
  86.             $this->images[] = $image;
  87.             $image->setOwner($this);
  88.         }
  89.     }
  90.     public function removeImage(ImageInterface $image): void
  91.     {
  92.         if ($this->images->removeElement($image)) {
  93.             // set the owning side to null (unless already changed)
  94.             if ($image->getOwner() === $this) {
  95.                 $image->setOwner(null);
  96.             }
  97.         }
  98.     }
  99.     /**
  100.      * {@inheritdoc}
  101.      */
  102.     public function getImagesByType(string $type): Collection
  103.     {
  104.         return $this->images->filter(function (ImageInterface $image) use ($type) {
  105.             return $type === $image->getType();
  106.         });
  107.     }
  108.     /**
  109.      * {@inheritdoc}
  110.      */
  111.     public function hasImages(): bool
  112.     {
  113.         return !$this->images->isEmpty();
  114.     }
  115.     /**
  116.      * {@inheritdoc}
  117.      */
  118.     public function hasImage(ImageInterface $image): bool
  119.     {
  120.         return $this->images->contains($image);
  121.     }
  122.     public function getImage(): ?ImageInterface
  123.     {
  124.         return $this->getImages()->first()?:null;
  125.     }
  126. }