Как лучше реализовать огромную форму с кучей разных правил валидации?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
voodooism
Сообщения: 48
Зарегистрирован: 2018.11.12, 10:29

Как лучше реализовать огромную форму с кучей разных правил валидации?

Сообщение voodooism »

Для начала опишу вводные:
В системе имеется сущность тикета. Это одна из центральных сущностей бизнес-логики, соответственно имеет достаточно много полей и аггрегирует в себе несколько более маленьких сущностей. Тикеты приходят из разных источников по API, и от многих факторов зависит какие именно поля придут в тикете. Когда тикет приходит, определяется к какому бизнес-кейсу он относится и заполняется модель соответствующая кейсу. Например, если приходит тикет с типом 'refuse' я создаю TicketRefuseForm со своими правилами валидациями и загружаю её и далее работаю с ней. Сооветственно на каждый бизнес кейс у меня отдельная форма.

Но, помимо этого существует еще и веб интерфейс на котором обрабатываются тикеты. Там уже огромная форма которая содержит в себе все поля относящиеся к тикету. На самой форме имеется возможность изменить бизнес-кейс тикета(реализовано в виде дропдауна). Суть задачи сосоит в том, что при изменении тикета должны менятся правила валидации формы.

Не могу понять как это лучше реализовать. Сразу оговорюсь, что вариант со сценариями валидации отпадает, т.к. их будет очень много, в будущем количество будет увеличиваться, и это сделает код громоздким нечитаемым и неподдреживаемым. В идеале, конечно бы хотелось переиспользовать уже созданные объекты форм,но как это сделать?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Как лучше реализовать огромную форму с кучей разных правил валидации?

Сообщение ElisDN »

Вместо дропдауна сделайте отдельные ссылки на экшены с теми формами.
voodooism
Сообщения: 48
Зарегистрирован: 2018.11.12, 10:29

Re: Как лучше реализовать огромную форму с кучей разных правил валидации?

Сообщение voodooism »

ElisDN писал(а): 2019.07.16, 10:24 Вместо дропдауна сделайте отдельные ссылки на экшены с теми формами.
Да, это достаточно просто и такой вариант плавает на поверхности.
Можно, мне кажется, даже оставить дропдаун, просто слать по onCahnge запрос, и pjax-ом рендерить форму с нужными полями.

Но идея в том, что форма всегда должна быть целиком доступна для обозрения.
То есть я могу видеть все поля сущности на форме целиком, но допустим при выборе определенного кейса, применяются нужные правила валидации, и например допступными для редактирования становтся только те поля, что есть в кейсе(остальные при этом остаются видимыми, но readonly). Как вы думаете, можно ли вообще добиться такого поведения без жертвоприношений и танцев с бубнами в Yii?
Последний раз редактировалось voodooism 2019.07.16, 10:40, всего редактировалось 1 раз.
masson
Сообщения: 545
Зарегистрирован: 2012.07.03, 15:59

Re: Как лучше реализовать огромную форму с кучей разных правил валидации?

Сообщение masson »

Завернуть форму в пиджак. При выборе значения в дропдауне обновлять пиджак с отдельных экшенов отрисовывать одну и ту же форму.
Ответить