Добавлю шума :) Вопрос кто юзает command/handler. Как обрабатываете

крудовые сценарии, где nullable поля?
Например кейс: юзер может установить "пол", "о себе", "отчество". Чисто по логике никто не мешает эти данные заполнять в какой угодно комбинаторике (т.е. что-то с фронта отослать, а что-то нет). Не вижу смысла создавать несколько юзкейсов, проще один EditProfile с сеттерами
$user->setGender($command->gender);
$user->setInfo($command->info);
$user->setPatronymic($command->patronymic);
Проблема: если фронт зашлет только "пол", то затрутся остальные поля. Заставлять фронт слать что-то лишнее (т.е. всегда три поля) - ну такое себе. Я делал, что если null - то вообще ничего не делается, а если фронт хочет стереть - от пусть шлет пустую строку. Работает - но выглядит стремненько. Плюс это не сработает с int, выходит надо делать mixed/union type: string|int.
Как вы такие кейсы решаете?

14 ответов

25 просмотров

а почему эту лабуду в json не засунуть? зачем мест ов строках занимаь? ну и сеттеры — коммон, в пхп 7.4 ввели тайпед проперти, я для такого круда юзаю public и мне норм (серьезно) а там, где критично контролирвоать переходы состояния — там нет и геттеров даже, не то что сеттеров

Павел-Г. Автор вопроса
Максим Федоров
а почему эту лабуду в json не засунуть? зачем мест...

Не нормализованно как-то ) И даже если так, как это поможет? Мержить array - прощай спецификация. Да, один из самый интересных путей - тупо засериализовать на объект, но тогда в комманде не будет понятных аргументов

С таким конфигом, нужно перед гидрацией входящих данных предварительно заполнять ДТО текущими данными. Дальше их затирает уже фронт тем, что прислал.

Павел Г.
Не нормализованно как-то ) И даже если так, как эт...

ну пусть будет простая структура с полями, ее в JSON и забыли

Павел-Г. Автор вопроса
Oleg Okwinza
С таким конфигом, нужно перед гидрацией входящих д...

Т.е. доставать сущность, мапить на дто, потом мержить данные? Ну чет такое себе... причем на этапе контроллера

Павел-Г. Автор вопроса
Максим Федоров
ну пусть будет простая структура с полями, ее в JS...

Просто эта страуктура не будет описана, вот в чем проблема

Павел Г.
Т.е. доставать сущность, мапить на дто, потом мерж...

SELECT NEW UpdateAddressRequest Можно прямо средствами DQL

Павел-Г. Автор вопроса
Максим Федоров
так опиши объектом, а не массивом

Так вот у меня есть объект с nullable проперти. Как мне понять - они null потому что их фронт не прислал, или null потому что он специально прислал ?)

Павел-Г. Автор вопроса
Oleg Okwinza
SELECT NEW UpdateAddressRequest Можно прямо средст...

Все равно это на уровне контроллера.

Павел Г.
Все равно это на уровне контроллера.

Можно вынести на уровень ArgumentResolver

Павел Г.
Т.е. доставать сущность, мапить на дто, потом мерж...

В ApiPlatform схожий принцип, разница лишь в том, что там он зарыт где-то в кишках

Павел-Г. Автор вопроса
Oleg Okwinza
В ApiPlatform схожий принцип, разница лишь в том, ...

Верно, хотелось бы именно это, у них это через сериализатор и массив

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта