• Как работать с slug в Symfony?

    @pv-klochkov Автор вопроса
    BoShurik,

    Всё решилось.

    Помог рецепт Виктора
    Написано
  • Как работать с slug в Symfony?

    @pv-klochkov Автор вопроса
    Благодарю!
    Заработало.
    В книге про это нет ничего. Пошёл дальше учиться
    Написано
  • Как работать с slug в Symfony?

    @pv-klochkov Автор вопроса
    BoShurik,
    Вот такое:
    Symfony Container Services Tagged with "controller.argument_value_resolver" Tag
    ===============================================================================
    
     ------------------------------------------------------------------------- ---------- ---------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------
      Service ID                                                                priority   name                                                                                     Class name
    
     ------------------------------------------------------------------------- ---------- ---------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------
      security.user_value_resolver                                              120        Symfony\Component\Security\Http\Controller\UserValueResolver                             Symfony\Component\Security\Http\Controller\UserValueResolver
      security.security_token_value_resolver                                    120        Symfony\Component\Security\Http\Controller\SecurityTokenValueResolver                    Symfony\Component\Security\Http\Controller\SecurityTokenValueResolver
      doctrine.orm.entity_value_resolver                                        110        Symfony\Bridge\Doctrine\ArgumentResolver\EntityValueResolver                             Symfony\Bridge\Doctrine\ArgumentResolver\EntityValueResolver
      argument_resolver.backed_enum_resolver                                    100        Symfony\Component\HttpKernel\Controller\ArgumentResolver\BackedEnumValueResolver         Symfony\Component\HttpKernel\Controller\ArgumentResolver\BackedEnumValueResolver
      argument_resolver.uid                                                     100        Symfony\Component\HttpKernel\Controller\ArgumentResolver\UidValueResolver                Symfony\Component\HttpKernel\Controller\ArgumentResolver\UidValueResolver
      argument_resolver.datetime                                                100        Symfony\Component\HttpKernel\Controller\ArgumentResolver\DateTimeValueResolver           Symfony\Component\HttpKernel\Controller\ArgumentResolver\DateTimeValueResolver
      argument_resolver.request_attribute                                       100        Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver   Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver
      argument_resolver.request                                                 50         Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver            Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver
      argument_resolver.session                                                 50         Symfony\Component\HttpKernel\Controller\ArgumentResolver\SessionValueResolver            Symfony\Component\HttpKernel\Controller\ArgumentResolver\SessionValueResolver
      EasyCorp\Bundle\EasyAdminBundle\ArgumentResolver\AdminContextResolver
                                                                        EasyCorp\Bundle\EasyAdminBundle\ArgumentResolver\AdminContextResolver
      EasyCorp\Bundle\EasyAdminBundle\ArgumentResolver\BatchActionDtoResolver
                                                                        EasyCorp\Bundle\EasyAdminBundle\ArgumentResolver\BatchActionDtoResolver
      argument_resolver.service                                                 -50        Symfony\Component\HttpKernel\Controller\ArgumentResolver\ServiceValueResolver            Symfony\Component\HttpKernel\Controller\ArgumentResolver\ServiceValueResolver
      argument_resolver.default                                                 -100       Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver            Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver
      argument_resolver.variadic                                                -150       Symfony\Component\HttpKernel\Controller\ArgumentResolver\VariadicValueResolver           Symfony\Component\HttpKernel\Controller\ArgumentResolver\VariadicValueResolver
      argument_resolver.not_tagged_controller                                   -200
                                                                        Symfony\Component\HttpKernel\Controller\ArgumentResolver\NotTaggedControllerValueResolver
     ------------------------------------------------------------------------- ---------- ---------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------
    Написано
  • Как работать с slug в Symfony?

    @pv-klochkov Автор вопроса
    Symfony 7.04

    "php": ">=8.3",

    "doctrine/dbal": "^3",
    "doctrine/doctrine-bundle": "^2.12",
    "doctrine/doctrine-migrations-bundle": "^3.3",
    "doctrine/orm": "^3.1",
    "easycorp/easyadmin-bundle": "^4",
    Написано
  • Как работать с slug в Symfony?

    @pv-klochkov Автор вопроса
    Вот он
    namespace App\Entity;
    
    use App\Repository\PageRepository;
    use DateTimeImmutable;
    use Doctrine\DBAL\Types\Types;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
    use Symfony\Component\String\Slugger\SluggerInterface;
    
    
    #[ORM\Entity(repositoryClass: PageRepository::class)]
    #[ORM\HasLifecycleCallbacks]
    #[UniqueEntity(fields: ['title'], message: 'Страница с таким title уже существует')]
    #[UniqueEntity(fields: ['slug'], message: 'Страница с таким slug уже существует')]
    class Page
    {
        #[ORM\Id]
        #[ORM\GeneratedValue]
        #[ORM\Column]
        private ?int $id = null;
    
        #[ORM\Column(length: 255, unique: true)]
        private ?string $title = null;
    
        #[ORM\Column(length: 255, unique: true)]
        private ?string $slug = null;
    
        #[ORM\Column(type: Types::TEXT)]
        private ?string $description = null;
    
        #[ORM\Column(length: 255, nullable: true)]
        private ?string $cover = null;
    
        #[ORM\Column(type: Types::TEXT)]
        private ?string $body = null;
    
        #[ORM\Column]
        private ?DateTimeImmutable $createdAt = null;
    
        public function __toString(): string
        {
            return $this->title;
        }
    
        public function getId(): ?int
        {
            return $this->id;
        }
    
        
        public function getTitle(): ?string
        {
            return $this->title;
        }
        
        public function setTitle(string $title): static
        {
            $this->title = $title;
    
            return $this;
        }
        
        public function getSlug(): ?string
        {
            return $this->slug;
        }
        
        public function setSlug(string $slug): static
        {
            $this->slug = $slug;
    
            return $this;
        }
    
       
        public function computeSlug(SluggerInterface $slugger): void
        {
            if (!$this->slug || '-' === $this->slug) {
                $this->slug = (string) $slugger->slug((string) $this)->lower();
            }
        }
        public function getDescription(): ?string
        {
            return $this->description;
        }
    
        public function setDescription(string $description): static
        {
            $this->description = $description;
    
            return $this;
        }
    
    
        public function getCover(): ?string
        {
            return $this->cover;
        }
    
       
        public function setCover(?string $cover): static
        {
            $this->cover = $cover;
    
            return $this;
        }
    
        public function getBody(): ?string
        {
            return $this->body;
        }
    
        public function setBody(string $body): static
        {
            $this->body = $body;
    
            return $this;
        }
    
     
        public function getCreatedAt(): ?DateTimeImmutable
        {
            return $this->createdAt;
        }
    
       
        public function setCreatedAt(DateTimeImmutable $createdAt): static
        {
            $this->createdAt = $createdAt;
    
            return $this;
        }
        #[ORM\PrePersist]
        public function setCreatedAtValue(): void
        {
            $this->createdAt = new DateTimeImmutable();
        }
    }
    Написано