Roman 
    
    
        
        
        
        /**
         * @ORM\Id
         * @ORM\Column(type="uuid", unique=true)
         * @ORM\GeneratedValue(strategy="CUSTOM")
         * @ORM\CustomIdGenerator(class="\Ramsey\Uuid\Doctrine\UuidGenerator")
         * @OA\Property(
         *     type="string",
         *     format="uuid"
         * )
         */
        private $id;
    
 
    
    Roman 
    
    
        
        
        
        похоже, надо описать формат uuid
    
 
    
    Vlad 
    
    
        
        
        
        @Friendsys Убери с геттера описание доки,
    
 
    
    Roman 
    
    
        
        
        
        секунд
    
 
    
    Roman 
    
    
        
        
        
        убрал, все то же 🙁
    
 
    
    Vlad 
    
    
        
        
        
        это очень странно
    
 
    
    Roman 
    
    
        
        
        
        в общем
    
 
    
    Roman 
    
    
        
        
        
        написал свой PropertyDescriber
    
 
    
    Roman 
    
    
        
        
        
        и заработало
    
 
    
    Roman 
    
    
        
        
        
        сделал по аналогии с DateTime класс дескрайбера
    
 
    
    Roman 
    
    
        
        
        
        class UuidPropertyDescriber implements \Nelmio\ApiDocBundle\PropertyDescriber\PropertyDescriberInterface
        {
            use NullablePropertyTrait;
            /**
             * @inheritDoc
             */
            public function describe(array $types, Schema $property, array $groups = null)
            {
                $property->type = 'string';
                $property->format = 'uuid';
                $this->setNullableProperty($types[0], $property);
            }
        
            /**
             * @inheritDoc
             */
            public function supports(array $types): bool
            {
                return 1 === count($types)
                    && Type::BUILTIN_TYPE_OBJECT === $types[0]->getBuiltinType()
                    && is_a($types[0]->getClassName(), UuidInterface::class, true);
            }
        }
    
 
    
    Roman 
    
    
        
        
        
        и в services.yml:
        
        App\Utils\UuidPropertyDescriber:
            tags: [ { name: nelmio_api_doc.object_model.property_describer } ]
    
 
    
    Vlad 
    
    
 
    
    Roman 
    
    
        
        
        
        теперь мне нужно отдельный контроллер создать под апи и туда набить методов, правильно?
    
 
    
    Vlad 
    
    
 
    
    Roman 
    
    
        
        
        
        а как верно? Вот есть у меня админка, хочу туда кидать запросы по api и создавать сущности, к примеру
    
 
    
    Vlad 
    
    
        
        
        
        Точнее, подругому отвечу, если у  тебя уже есть контроллеры для апи то описывай там
    
 
    
    Roman 
    
    
        
        
        
        есть контроллер для администрирования сущности, который crud реализует через формы
    
 
    
    Roman 
    
    
        
        
        
        вряд ли он подойдет?
    
 
    
    Roman 
    
    
        
        
        
        или делать отдельные методы для api?
    
 
    
    Roman 
    
    
        
        
        
        но тогда дублирование функционала (crud) получается
    
 
    
    Vlad 
    
    
 
    
    Roman 
    
    
        
        
        
        а, ну значит верно мыслю )
    
 
    
    Vlad 
    
    
 
    
    Roman 
    
    
        
        
        
        это новое ) А куда выносить?
    
 
    
    Vlad 
    
    
        
        
        
        контроллер отвечает только за принять данные, отвалидировать отправить на обработку и отдать
    
 
    
    Roman 
    
    
        
        
        
        мидлвару делать?
    
 
    
    Roman 
    
    
        
        
        
        спасибо, погляжу сейчас )
    
 
    
    Roman 
    
    
        
        
        
        будем образовываться. В общем, логика, которая может происходить с Entity, пишется в Enitty, бизнес логика пишется где-то-между контроллерами и энтити, в контроллерах первичная валидация, редиректы и вызовы бизнес-логики. Звучит приятно, попробуем с этим взлететь )
    
 
    
    Shokha 
    
    
        
        
                    
                
        
        чтобы Psalm так не ругал что надо делать?
    
 
 
    
    Shokha 
    
    
        
        
        
        MissingConstructor я вообще не исползиваю конструктор в этом сущности
    
 
    
    Shokha 
    
    
        
        
        
        значить по правилам нельзя  писать так 
        
            /**
             * @ORM\Column(name="title", type="string", length=64)
             */
            private string $title;
    
 
    
    Shokha 
    
    
        
        
        
        надо  private string $title = '';   ?
    
 
    
    Boris 
    
    
 
    
    Shokha 
    
    
 
    
    Shokha 
    
    
 
    
    Roman 
    
    
        
        
        
        Доброго утра. А почему в Entity может автовайринг не работать? Хочу присобачить сериалайзер, прописал свойство, в конструктор добавил аргумент, в сервисах прописал аргумент - пробую обратиться - получаю Typed property App\Entity\Widget::$serializer must not be accessed before initialization. С другими классами прокатывает, с теми, что в Entity - нет.
    
 
    
    Александр 
    
    
 
    
    Roman 
    
    
 
    
    Александр 
    
    
        
        
        
        Да
    
 
    
    Roman 
    
    
        
        
        
        и правда... Спасибо, вырежу сейчас попробую )
    
 
    
    Vlad 
    
    
 
    
    Roman 
    
    
        
        
        
        а как? )
    
 
    
    Vlad 
    
    
        
                    
                        
                            
                            а как? )
                        
                    
                
        
        
        Какую задачу ты хочешь решить?
    
 
 
    
    Иван 
    
    
        
        
        
        а никак, у сущностей не должно быть сервисов
        S for SOLID
    
 
    
    Иван 
    
    
        
        
        
        у сериализаций контексты шмонтексты, вот это вот всё, сущности про такое знать не положено
    
 
    
    Vlad 
    
    
        
        
        
        Всем привет
        У кого-нибудь есть полный гайд по правильной установке симфони на опенсервер? Например, включая как использовать nginx, а не встроенный сервер symfony и т. д.
    
 
    
    Roman 
    
    
 
    
    Roman 
    
    
        
        
        
        но тогда где создавать этот объект и зачем мне плодить сущности?
    
 
    
    Юра 
    
    
 
    
    Dmitry 
    
    
        
                    
                        
                            
                            но тогда где создавать этот объект и зачем мне плодить сущности?
                        
                    
                
        
        
        Сервис-контейнер придуман для сервисов, а не для сущностей. Сущности только хранят и управляют своими данными.
        
        Если сущности понадобился какой-то сервис, то передавайте его в метод сущности вроде $entity->method(..., $serializer) и используйте его там налету, а не присваивайте в конструкторе.
        
        А так сериалайзер по своему назначению обычно используется выше на уровне контроллера, поэтому обычно ему не место в сущности.
    
 
 
    
    Roman 
    
    
 
    
    Roman 
    
    
        
        
        
        правда, очень хочется разобраться 🙂
    
 
    
    Dmitry 
    
    
 
    
    Roman 
    
    
        
        
        
        угу, понял, где ошибся. У меня первая и вторая части доклада спутались :)
    
 
    
    Dmitry 
    
    
        
                    
                        
                            
                            пойду еще раз пересмотрю )
                        
                    
                
        
        
        Там как раз пять разных контроллеров заполняют одну и ту же команду из формы или сериалайзера. И хэндлер команды как раз инжектит другие сервисы и использует сущность.
    
 
 
    
    Roman 
    
    
 
    
    Dmitry 
    
    
        
                    
                        
                            
                            да, как раз смотрю
                        
                    
                
        
        
        Этот доклад подготовлен по коду моего большого проекта https://youtu.be/j2hvBhxTSuQ
    
 
 
    
    Roman 
    
    
        
        
        
        точно )))
    
 
    
    Dmitry 
    
    
        
                    
                        
                            
                            да, как раз смотрю
                        
                    
                
        
        
        А если интересует связка API с фронтендом, то более современный вариант я использую в новом проекте с 13-го эпизода. С обновлённым кодом всех команд, хэндлеров и сущностей.
    
 
 
    
    Roman 
    
    
 
    
    Dmitry 
    
    
 
    
    Roman 
    
    
        
                    
                        
                            
                            Разные весовые категории
                    https://t.me/oop_ru/151827
                        
                    
                
        
                    
                
        
        Еще такой вопрос (я, конечно, сам проверю, когда до этого дойду) - При такой записи что будет делать Доктрина? Как она определит, что надо создать соответствующие поля в БД? Как определит тип, как прописать Constraint и прочие ништяки?
    
 
 
    
    Roman 
    
    
        
        
        
        а, вижу про ConfirmToken, извиняюсь
    
 
    
    Roman 
    
    
        
        
        
        вопрос снят
    
 
    
    Roman 
    
    
        
        
        
        только в докладе нет окончания - как все же подружить этот Lot, который весь правильный и созданный в конце Lot, который сущность
    
 
    
    Vlad