Size: a a a

2021 June 25

ПВ

Пупс Всемирный... in symfony
self - ыуда ))))
источник

TA

Timofeev Andrey in symfony
весело живём🤡
источник

ПВ

Пупс Всемирный... in symfony
источник

S

Sergey in symfony
Добрый день всем! Подскажите по архитектуре. По опыту, очень часто требуется добавить логику в модель, что бы вызывать ее напрямую во вьюхе/сериализаторе и тд. Но в саму модель передавать сервис нельзя(гайды симфони не рекомендуют, но и в принципе понятно почему, это же только модель).
Например, если сервис определяющий годность продукта от кучи параметров. Сейчас я в контроллере делаю $shelfLife = $service->getShelfLife($product) и передаю во вьюху. Точно так же вынужден писать еще в 3-4 контроллерах и сериализаторах, что мне не нравится, тк можно забыть, другой разработчик может не знать что это нужно, методов из сервиса может быть много и все это некрасиво передавать дальше отдельными переменными  и тд.
Как лучше в таких случаях делать? Может статью посоветуете хорошую на эту тему?
источник

JN

Julia Nikolaeva in symfony
Есть такая штука, как DTO (Data Transfer Object). Заполняете её и передаете во все вьюхи
источник

👤U

👤 User in symfony
DTO это такой plain object. Заполняется чем угодно. Может иметь геттеры с логикой.
источник

S

Sergey in symfony
Пробовал, на самом деле кода меньше не становиться, единственный плюс - появляется возможность валидации
источник

JN

Julia Nikolaeva in symfony
источник

S

Sergey in symfony
ну то есть вся разница в том, что в контроллер я пишу не $shelfLife = $service->getShelfLife($product), а $dtoEntity->setShelfLife($service->getShelfLife($product))
источник

S

Sergey in symfony
и точно так же, нужно вручную инициализировать во всех точках входах в приложения
источник

JN

Julia Nikolaeva in symfony
Почему не сделать для этого отдельный класс, который будет дто заполнять? И вызывать везде его
источник

S

Sergey in symfony
потому что это не очень красиво выглядит, особенно при работе с массивами и коллекциями
источник

AT

Adilet Tussupbekov in symfony
Вам нужно на основе данных в сущности производить логику и отдавать значение во вью?
источник

S

Sergey in symfony
Я пробовал делать DTO расширением класса модели, надеясь, что doctrine корректно подхватит аннотацию из базового класса, но возникают ошибки при гидратации и DTO остается пустой
источник

S

Sergey in symfony
Да, на основе данных в сущности и сервисов
источник

AT

Adilet Tussupbekov in symfony
У вас в сервисе хранятся данные?
источник

S

Sergey in symfony
нет, ну может пара констант
источник

AT

Adilet Tussupbekov in symfony
Нельзя прописать саму логику в сущности?
источник

S

Sergey in symfony
нет, мне кажется это плохая идея
источник

AT

Adilet Tussupbekov in symfony
Чем эта идея плохая?
источник