Size: a a a

2020 November 19

VM

Volodymyr Melko in symfony
Dmitry Khaperets
Это один из вариантов. Если указать, что id должен быть числом - будет все ок.
Если же в аргументах используется DTO, которое заполняется из запроса и в свойство объекта сетится неверный тип - снова будет исключение
и вот интерфейс для ДТОхи у меня такой
http://sandbox.onlinephpfunctions.com/code/01cfa3d8c2fb92b185b814c61a9af07b715154ad
источник

DK

Dmitry Khaperets in symfony
У меня DTO заполняются с помощью денормалайзера/десериалайзера, буду эту логику оборачивать в try-catch
источник

VM

Volodymyr Melko in symfony
Dmitry Khaperets
Это один из вариантов. Если указать, что id должен быть числом - будет все ок.
Если же в аргументах используется DTO, которое заполняется из запроса и в свойство объекта сетится неверный тип - снова будет исключение
и вот так в контроллере
public function __invoke(CreateArticle $dto, ...): JsonResponse
источник

VM

Volodymyr Melko in symfony
резолверы автоматом вроде как регаются, так что никаких доп аннотаций в контроллере не нужно, симфа сама найдет нужный используя метод саппорт зареганых резолверов
источник

EY

Eugene Yurkevich in symfony
Dmitry Khaperets
У меня DTO заполняются с помощью денормалайзера/десериалайзера, буду эту логику оборачивать в try-catch
да, создание объекта DTO в try/catch обернуть
Лови Throwable
Это будет "общая" ошибка.

А следом если все ок валидируй DTO и там уже можешь ошибки подвязать к полям
источник

SB

Sergei Baikin in symfony
Dmitry Khaperets
У меня DTO заполняются с помощью денормалайзера/десериалайзера, буду эту логику оборачивать в try-catch
А можно сначало провалидировать даные а потом уже в структуру преврашщать
тогда и ошибки не надо ловить  и валдицая будет даных пользователя а не DTO (DTO при этом всегда валидной будет)

Пытатся запихать непонятно какие данные в сереализатор такая себе идея
Пользователь будет офигивать с ошибок от сереализатора
источник

EY

Eugene Yurkevich in symfony
Sergei Baikin
А можно сначало провалидировать даные а потом уже в структуру преврашщать
тогда и ошибки не надо ловить  и валдицая будет даных пользователя а не DTO (DTO при этом всегда валидной будет)

Пытатся запихать непонятно какие данные в сереализатор такая себе идея
Пользователь будет офигивать с ошибок от сереализатора
Можно и так. Минус, что нужно будет резолверы писать постоянно на новые DTO.
А так например вот в проекте только один JsonArgumentResolver используется. DTO новые просто накидывается добавлением самой DTO и @psalm-immutable на нее)
источник

AN

Alexander Nazarov in symfony
Sergei Baikin
А можно сначало провалидировать даные а потом уже в структуру преврашщать
тогда и ошибки не надо ловить  и валдицая будет даных пользователя а не DTO (DTO при этом всегда валидной будет)

Пытатся запихать непонятно какие данные в сереализатор такая себе идея
Пользователь будет офигивать с ошибок от сереализатора
А как валидировать json? В сериализаторе есть ObjectNormalizer::DISABLE_TYPE_ENFORCEMENT
источник

AN

Alexander Nazarov in symfony
Dmitry Khaperets
У меня DTO заполняются с помощью денормалайзера/десериалайзера, буду эту логику оборачивать в try-catch
Вы видели ObjectNormalizer::DISABLE_TYPE_ENFORCEMENT ? Может это решит ваш кейс? Не приравнивайте типы, просто соберите DTO как получится, а потом уже провалидируйте ее.
источник

DK

Dmitry Khaperets in symfony
Alexander Nazarov
Вы видели ObjectNormalizer::DISABLE_TYPE_ENFORCEMENT ? Может это решит ваш кейс? Не приравнивайте типы, просто соберите DTO как получится, а потом уже провалидируйте ее.
да, уже отключил и перехватываю исключение Symfony\Component\Serializer\Exception\UnexpectedValueException
источник

DK

Dmitry Khaperets in symfony
Еще раз всем спасибо за помощь, решение подходит
источник

SB

Sergei Baikin in symfony
Alexander Nazarov
А как валидировать json? В сериализаторе есть ObjectNormalizer::DISABLE_TYPE_ENFORCEMENT
1. JsonSchema validator
2. Тем же симфони валидаромю Он прекрасно валидирует массивы тем же конфигом что и обекты
3 Симфоневкий конфиг который для провекри коняига бандов используется

Мне больше нравитяс первый вариант ибо его можно и на клиенте заюзать перед отправкой запроса

Иметь невалидные обекты в системе такое себе
кто то обязательно заиспользует невалидный объект\структуру
источник

YB

Yurii Borysov in symfony
Всем привет, такойвот  вопрос - если кто подключал symfony messenger с sqs  -  как должен выглядеть MESSENGER_TRANSPORT_DSN, например для локалстака?
источник

YB

Yurii Borysov in symfony
подразумевается   symfony-messenger-sqs, который в 5.1 появился
источник

AA

Anatoly Astapov in symfony
Привет всем, есть интересный вопрос.
как рефлексией получить Typed property в php7.4  у dto класса ?
Есть какие то варианты ?
спасибо
источник

DA

Danil Andreyev in symfony
Anatoly Astapov
Привет всем, есть интересный вопрос.
как рефлексией получить Typed property в php7.4  у dto класса ?
Есть какие то варианты ?
спасибо
)))))
источник

DA

Danil Andreyev in symfony
источник

AA

Anatoly Astapov in symfony
Блин, я слепой
источник

AA

Anatoly Astapov in symfony
Спасибо, слепой я таки )
источник

JB

Jurij Bachkov in symfony
Yurii Borysov
Всем привет, такойвот  вопрос - если кто подключал symfony messenger с sqs  -  как должен выглядеть MESSENGER_TRANSPORT_DSN, например для локалстака?
sqs://
источник