@DmitriyFrolov

Как организовать валидацию и сохранение динамических форм в YII?

Добрый день столкнулся с проблемой, с сохранением и вальвацией динамически полей.
Допустим для примера есть основная таблица в базе данных в ней есть некоторые параметры.

Клиент

- Ф.И.О
- Телефон
- Адрес проживания
- Возраст
- Пол

Хотелось бы добавить возможность для данной таблицы динамический добавлять разные типы полей, допустим поле - "подписан клиента на рассылку" да/нет или какой вид услуг предпочитает клиент ( выпадающий список с выбором нескольких услуг)

Это очень хорошо реализована в joomla 3 когда к материалам можно создать отдельные поля определенного типа с определённым набором данных и они будут применены ко всем материалам.

Я примерно набросал структуру базы данных

entity

-id
-somefield1
-somefield2
-somefield2
...

attribute
- id
- name // название поля
- type // тип поля
- default // значение по умолчанию
- required // обязательное
- params // здесь храним все наши параметры в зависимости от типа поля, допусти если нам нужен выпадающий список то храним что то типо options => [ option1 => [ name => параметр 1, value => 1], option1 => [ name => параметр 2, value => 2]

attribute_value
- attribute_id // ID поля
- entity_id // Модель
- value // значение

Теперь уже ближе, к сути, я ни как не могу разобраться как в activeform написать валидацию и сохранение entity и дополнительных параметров.

То есть что бы в форме вывести все поля модели entity и там же вывести все дополнительные поля созданные динамический. А при сохранении всё это чудо провалидировать.

Заранее спасибо за ваши предложения и идеи.
  • Вопрос задан
  • 220 просмотров
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
1. Читаете из базы данные и формируете из них массив параметров который необходимо заполнить
2. На основе этого массива формируете динамическую модель
3. Динамическую модель скармливаете ActiveForm
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы