atcq (Алексей)
Логика в том, что если нет продукта, то добавляется поле новое. Это бизнес логика.
это после приёма данных формы проверяется, сама форма может быть вообще любой, хоть с плейсхолдерами
atcq (Алексей)
создаваться может разная форма же, это никак не связано с действиями, которые по её отправке выполняются
atcq (Алексей)
а еще форма может в отдельном проекте быть, в spa приложении, вопрос, у бекенда при этом станет меньше бизнес логики?
Maxim Kainov
Форма это и бэкенд в том числе
atcq (Алексей)
не, бекенд начинается с получения данных из post\очереди\вебсокета, а ui для генерации этих данных вообще может быть любым и строится исходя из удобства пользователя
atcq (Алексей)
это странно к бл относить
atcq (Алексей)
форма данные генерирует, не принимает
atcq (Алексей)
фактически, если ты принимаешь пачку данных - не факт, что они вообще формой созданы
Maxim Kainov
форма данные генерирует, не принимает
Принимает, валидирует и сохраняет
Maxim Kainov
Валидатором и сериалайзером
atcq (Алексей)
может это дамп, который удобного момента ждал
atcq (Алексей)
Принимает, валидирует и сохраняет
на чьей стороне валидирует, куда сохраняет?
Maxim Kainov
В ентити сохраняет
atcq (Алексей)
если нужно добавить клиентскую валидацию - что происходит?
atcq (Алексей)
Читай документацию
мне пример в документации кажется диким смешением слоёв
atcq (Алексей)
о чем я и пишу
Maxim Kainov
мне пример в документации кажется диким смешением слоёв
Шаблоны в отдельных файлах шаблонов. Какое смешение?
atcq (Алексей)
смешение в том, что по факту указываются не требования к данным, что должна выдать форма, а описывается сама форма, неподсредственно
Maxim Kainov
atcq (Алексей)
Смешение чего с чем? Форма динамическая, как ты непосредственно требования укажешь?
формируешь конфигурацию, что в результате нужны поля a,b,c,d таких-то типов, а как с этим будет работать фронтенд - его личное дело
atcq (Алексей)
Ну вот, форма и формирует это
там еще слой интерфейса примешивается, как ни крути, плюс сам термин "форма" намекает
Ilya 🃏
Привет, подскажите, является ли такая конструкция внутри entity нормальной практикой?
Ilya 🃏
Ilya 🃏
Добавление сущности-потомка с проверкой и созданием внутри сущности-родителя
Vlad
первый форич не нужен
Ilya 🃏
Или лучше вынести в сервис?
Ilya 🃏
первый форич не нужен
А не будет ошибки или двух одинаковых записей тогда?
Ilya 🃏
По сути WebinarEmployee это jointable с User и Webinar полями
Maxim Kainov
А если, например, WebinarEmployee понадобится создать через фабрику?
Maxim Kainov
А фабрике нужны будут сторонние сервисы
Ilya 🃏
Возможно такое, что в будущем и добавятся какие-нибудь дополнительные поля для этой сущности, есть такое
Ilya 🃏
Тогда, наверное, лучше вынести
Maxim Kainov
Думаю, да
atcq (Алексей)
Как он примешивается? Что намекает?
не поленился сходить в исходники, вот же с view слоем интеграция
atcq (Алексей)
https://github.com/symfony/form/blob/48df9ae9692207e65f09a5080367f4ddf55cced8/FormRenderer.php
Maxim Kainov
Хотя, первую часть, можно было бы и оставить, наверное
Ilya 🃏
Ilya 🃏
Так делают даже в доке официальной
Ilya 🃏
Тут и форич не нужен и все проще в разы
Ilya 🃏
Но создание переносится на слой сервиса
Maxim Kainov
Ну здесь вообще логики нет практически, просто добавление элемента в массив
Maxim Kainov
не поленился сходить в исходники, вот же с view слоем интеграция
Ну она по любому будет интеграция, как иначе )
atcq (Алексей)
Ну она по любому будет интеграция, как иначе )
не будет, если это реально генерация требований к данным на выходе
Ilya 🃏
Еще вопрос, если добавить @ORM\UniqueEntity(fields={"webinar", "user"}), то при добавлении сущности по уже существующему совпадению вебинар-юзер, будет ошибка или просто её проигнорит? Или ->contains метод сам не пропустит такое?
Maxim Kainov
В браузере
atcq (Алексей)
А откуда тогда html возьмется?
spa приложение нарисует, мобильное приложение или что либо еще на фронтенде
atcq (Алексей)
при том, как именно будет выглядеть форма в данный момент - дело фронтенда, может какие-то данные он из контекста подставит, убрав инпуты
atcq (Алексей)
А где оно данные будет брать?
запросит нужные сущности отдельным запросом, вытащит из кеша, слетает за ними на луну
atcq (Алексей)
а на бекенд данные придут в том виде, который он указал в требованиях
Maxim Kainov
запросит нужные сущности отдельным запросом, вытащит из кеша, слетает за ними на луну
Серверу нужно сформировать запрос пригодный для клиента, интеграция по любому есть
atcq (Алексей)
А если требования динамические?
фронтенд тоже не из дерева сделан, приняли json с описанием того что нужно - сгенерировали интерфейс с учетом требований, текущей страницы и фазы луны
atcq (Алексей)
Короче, завязывай клей нюхать
ок, расскажи тогда, как будешь интегрировать такие формы со spa на react/мобильным приложением
atcq (Алексей)
и что будешь делать, приложение с нуля писать, если потребуется полноценный фронтенд, но с динамическими формами?
atcq (Алексей)
говорю же, смешение слоёв
atcq (Алексей)
а то что было - выкинешь или будешь переписывать?
Maxim Kainov
Можно и оставить их, немного переписать
atcq (Алексей)
вот, мы наконец подошли к тому, что это не бизнес логика, потому что операции остались те же, сменился только тип фронтенда, но ты уже должен этот код переписать
atcq (Алексей)
если бы там была только генерация json с требованиями, то ок, он бы пережил и замену фронта и еще много что
atcq (Алексей)
Бизнес код останется тот же. Переписать нужно будет взаимодействие с фронтендом
ну вот судя по тому, что ты в точности не уверен, как поступить при замене фронта - это не так
atcq (Алексей)
Судя по тому, что ты несешь ерунду, ты гонишь
тогда покажи какую-то статью по интеграции этих форм с нетвиговым фронтом, лучше spa или react native
Maxim Kainov
ну вот судя по тому, что ты в точности не уверен, как поступить при замене фронта - это не так
Я говорил, что нужно переделать интеграцию, это можно сделать разными способами