
Dmitriy
27.03.2018
14:59:56

Konstantin
27.03.2018
14:59:56
мне валидация нужна пока запрос в контроллер не пришел

Sergey
27.03.2018
15:00:06

Konstantin
27.03.2018
15:00:08
вот для этого и нужен дто с мета инфой для валидации в аннотациях

Google

Олексій
27.03.2018
15:00:10

Konstantin
27.03.2018
15:00:22
там вот удобно например именно дто а не какой то массивчик

Sergey
27.03.2018
15:00:34

Vladislav
27.03.2018
15:00:39
этого достаточно

Konstantin
27.03.2018
15:00:48
есть поговорка такая
делай безобразно но однообразно
ну или хз может не поговорка

Sergey
27.03.2018
15:01:13
ну или хз может быть эта цитата тут не к месту...

Konstantin
27.03.2018
15:01:19
кароче если уж юзаешь дто на входе - на выходе тоже дто. вполне себе спокойно можно жить

Sergey
27.03.2018
15:01:40

Konstantin
27.03.2018
15:02:01
boundaries между слоями не отменяли )
юзай массивы если нравится )

Google

Олексій
27.03.2018
15:02:18

Sergey
27.03.2018
15:02:23
потому что они разные
сможем провести границу
и теперь "единообразие" притянуто зауши

Konstantin
27.03.2018
15:03:10
т.е. хочешь сказать что передать объект в темплейтер это уже прям нарушение закона

Sergey
27.03.2018
15:03:22
это как "если мы пишем в сущность которая грузится в UoW то и читать должны тоже с испльзование UoW"

Konstantin
27.03.2018
15:03:39
дто жы не сущность
дто и есть чтобы между границами передавать

Dmitriy
27.03.2018
15:03:51
Подскажите бандл или либу, которая может валидировать JSON по JSON Schema v5?

Vladislav
27.03.2018
15:04:08
он один

Sergey
27.03.2018
15:04:16
я еще раз повторю - как ты хэндлишь ситуации когда у тебя есть 5 ролей и одна один.... ну например JSON и поля какие-то для каких-то ролей надо скипать

Andrey
27.03.2018
15:04:28

Sergey
27.03.2018
15:04:40

Konstantin
27.03.2018
15:05:15

Bohdan
27.03.2018
15:05:18
opis кажись, я сейчас не у компа

Sergey
27.03.2018
15:05:27

Google

Konstantin
27.03.2018
15:05:33

Bohdan
27.03.2018
15:05:40

Konstantin
27.03.2018
15:06:02
на выходе
т.е. вопрос про то где зачистить респонз от ненужных данных

Alan
27.03.2018
15:06:11
у сериалайзера изолирующий слой - массивчики)))

Bohdan
27.03.2018
15:06:13
https://github.com/opis/json-schema/

Dmitriy
27.03.2018
15:06:34
Opis Json Schema is a PHP implementation for json-schema draft-07 and draft-06.
?

Sergey
27.03.2018
15:06:47
у тебя будет 5 DTO или 1 DTO?

Konstantin
27.03.2018
15:06:54
т.е. вопрос к тому чтобы занулить пару полей в dto против передачи уже чистого "массивчика"
без лишних полей

Sergey
27.03.2018
15:07:11

Konstantin
27.03.2018
15:07:47
5 дто и аннотации
пусть сериализер разбирается

Олексій
27.03.2018
15:08:12
ParamFether твой обьект
Ок спасибо. Наверное буду им довольствоваться, но все же жаль что нельзя в кастомный объект просетить (

Sergey
27.03.2018
15:08:42

Konstantin
27.03.2018
15:08:56
чего не понимаешь
сериализер превращает дто уже в респонз который отдается клиенту. хер его знает это json/xml/array понятия не имею

Vladislav
27.03.2018
15:09:20
та можно, лично я сделал свою аннотацию PaginationParams которая лжидает, валидирует filters, sorts, offset, limit и вставляет как параметры в экшн

Sergey
27.03.2018
15:09:22
чего не понимаешь
я бы хотел посмотреть как бы выглядел контроллер в такой ситуации (ну в идеале вообще код)

Google

Sergey
27.03.2018
15:09:33

Vladislav
27.03.2018
15:09:33
изи можно сделать чтобы был обьект. но это время и вопрос надо ли оно тебе

Sergey
27.03.2018
15:09:38
зачем сереалайзеру что-то решать?

Konstantin
27.03.2018
15:09:40
если есть дто - можно обозначить аннотации чтобы сериализер вырезал поля когда выполняется какое то условие

Sergey
27.03.2018
15:09:51

Konstantin
27.03.2018
15:09:53
затем чтобы не юзать кругом массивчики

Sergey
27.03.2018
15:10:05

Konstantin
27.03.2018
15:10:24
а, на 5 ролей 5 дто
не, 1 дто канешно, я думал 5 на разные операции

Admin
ERROR: S client not available

Sergey
27.03.2018
15:11:05
окей, все ще - вот у тебя есть 10 полей, из них два доставать дорого по ресурсам (ну так вышло) и надо они только для админов (их мало и там пофигу)
ты предлагаешь доставать все для всех и потом чистить
как поступишь?

Konstantin
27.03.2018
15:11:58
лол
так эти поля нужны или не нужны

Sergey
27.03.2018
15:12:15

Konstantin
27.03.2018
15:12:33
если у тя код выполняет тяжелые операции независимо от того кто клиент, хотя надо только для админов - дто то тут причем

Sergey
27.03.2018
15:13:00
а у тебя с излишками

Konstantin
27.03.2018
15:13:11
так тут уже про оптимизацию

Google

Sergey
27.03.2018
15:13:18
у тебя 1 DTO
ты сам выше сказал

Konstantin
27.03.2018
15:13:22
и

Sergey
27.03.2018
15:13:23
кто заполняет данными?
кто потом будет решать какой DTO подсовывать?
`if`ы в контроллерах?

Konstantin
27.03.2018
15:13:58
ты код покажи
там поспорим )
а так че голову ломать над абстрактной выдуманой ситуацией
если будешь передавать массивчики между слоями - их хуй потом завалидируешь
на каждом шаге
а для дто это можно автоматизировать

Sergey
27.03.2018
15:15:35
вот тебе типичный код когда DTO неудобно
if ($user->isAdmin()) {
return $dataProvider->dataWithSomeComplexStuff(); // уже вернет тебе `DataWithCOmplexStuffDTO`
} elseif ($user->isSomeOtherUser()) {
return $dataProvider->dataWithLessStuff(); // уже другой тип DTO
}
ну и т.д.
а для дто это можно автоматизировать
я еще не добрался до примеров когда в куче запросов фигурирует какой-нибудь профиль пользователя (часто используемые вложенные структуры) - кто данные туда будет агрегировать?

Konstantin
27.03.2018
15:16:45
зачем из метода возвращать два разных типа дто

Sergey
27.03.2018
15:16:52
+ ситуации когда у тебя респонс содержит данные из нескольких контекстов (границы и все такое) и данные надо как-то скомпоновать...

Konstantin
27.03.2018
15:16:54
почему бы не вернуть один и тот же

Sergey
27.03.2018
15:17:38
почему бы не вернуть один и тот же
тогда по сути единственная цель твоих DTO - контейнер с данными и перечень возможных полей (вообще без какой-либо возможности валидации)

Konstantin
27.03.2018
15:18:04
валидацию будет делать следующий слой, который примет данные

Sergey
27.03.2018
15:18:16
ты пойми, моя притензия не к тому что бы "выкинуть DTO" а к тому что "а может быть и не надо на каждый чих класс создавать для респонсов..."