<?phpnamespace App\Entity\Web;use Doctrine\ORM\Mapping as ORM;use App\Entity\Behaviors\TranslationTrait;use App\Entity\Behaviors\SluggableTrait;use Knp\DoctrineBehaviors\Contract\Entity\TranslationInterface;use Knp\DoctrineBehaviors\Contract\Entity\SluggableInterface;use Doctrine\ORM\Event\LifecycleEventArgs;use JMS\Serializer\Annotation as Serializer;/** * @ORM\Table(name="web_category_translations", * uniqueConstraints={@ORM\UniqueConstraint(name="sluging", columns={"locale", "slug"})} * ) * @ORM\Entity(repositoryClass="App\Repository\TranslationRepository") * @ORM\HasLifecycleCallbacks() */class TopCategoryTranslation implements TranslationInterface, SluggableInterface{ use SluggableTrait; use TranslationTrait; protected $isEmptyOff = true; /** * @Serializer\Groups({"api"}) * @Serializer\SerializedName("name") * @ORM\Column(type="string", length=199) */ private $name; /** * @ORM\Column(type="string", length=2) */ protected $locale; /** * @ORM\Column(type="string", length=190) */ protected $slug; public function getName(): ?string { return trim($this->name); } public function setName(string $name): self { $this->name = $name; return $this; } /** * Returns an array of the fields used to generate the slug. * * @return array */ public function getSluggableFields(): array { return [ 'name' ]; } public function generateSlug(): void { } /** * @ORM\PreUpdate() * @ORM\PrePersist() */ public function updateSlug( LifecycleEventArgs $eventArgs ) { $translatable = $this->getTranslatable(); $oldSlug = $translatable->getSlug(); if ( $this->getRegenerateSlugOnUpdate() || empty( $this->slug ) ) { $fields = $this->getSluggableFields(); $values = []; foreach ( $fields as $field ) { if ( property_exists( $this, $field ) ) { $val = $this->{$field}; } else { $methodName = 'get' . ucfirst( $field ); if ( method_exists( $this, $methodName ) ) { $val = $this->{$methodName}(); } else { $val = null; } } $values[] = $val; } $this->slug = $this->generateSlugValue( $values ); if ( $oldSlug !== $this->slug ) { $repo = $eventArgs->getEntityManager()->getRepository( get_class( $this ) ); $repo->updateSlug( $this ); } } }}