Я не понимаю как делать валидацию еще не известных данных. Простой пример. Предположим что в админке я могу составить форму, которую должны заполнять пользователи, первое поле я называю Фамилия, ставлю галочку, что оно обязательно, указываю минимальную длину 2; максимальную 40.
Добавляю второе поле - скажем Цвет, тоже определяю правила. Поля у меня совершенно любые, то что я вписываю, то и должно отобразиться клиенту.
Как лучше это хранить, как лучше генерировать форму, и сам вопрос, как сделать правильно валидацию? Разбираюсь в yii2 и хочется сделать правильно.
Пусть у поля атрибут name будет каким-то идентификатором, по которому можно будет узнать все его ограничения. В контролере отдаешь данные на валидацию модели поля, модель по идентификатору получает правила(ограничения), валидирует, отвечает контролеру, контролер формирует ответ клиенту.
Лучше на мой взгляд определить для динамических полей аттрибуты:
* type (string, int, datetime),
* required (обязательное ли поле),
* multiple/single (возможно ли вводить несколько значений)
* и т.п. в зависимости от задач
Ну а потом написать валидаторы в зависимости от type/required/multiple. Динамические поля и их аттрибуты хранить в БД.
Я тоже так думаю. При сохранении полей в адмике, составлять правила валидации в виде [['name', 'color'], 'required'], сериализовать и сохранять в бд, а затем в модели подставлять их в function rules().
Но я надеялся, что в фреймворке такое можно делать из коробки.