Приветствую!
Столкнулся с непонятностью. Возникла необходимость создать "универсальную" форму ввода данных (модель, контроллер, представление) что бы ее использовать как заготовку, например, для личной библиотеки свои классов и т.п.
Почитал рекомендации и вот одна из них говорила, что если модель формы может содержать очень много полей, причем список этих полей можно получить в виде массива (например из конфигурации сайта), то удобнее все поля формы загнать в один массив описываемый в модели ОДНИМ параметром.
При этом получая на сервере из формы значения в формате [ИМЯ_ОБЩЕГО_ПОЛЯ_ФОРМЫ][ИМЯ_ПОЛЯ_ВВОДА_ЗНАЧЕНИЯ]=значение.
И например в конструкторе класса заполнить ОБЩЕЕ поле массив списком полей формы из конфигурации. Мне идея очень понравилась и важно что не требует менять скрипт при изменении числа полей формы. Попробовал реализовать идею, НО столкнулся проблемой валидации.
По идее получается что нужно валидировать ОДИН массив разобрав его на поля формы и потом валидировать отдельно каждое.
Но разве нельзя сразу указать конкретное поле из массива (как я сделал указав ‘fieldForm[field_2]’) и его валидировать?
или Yii это не умеет?
фрагменты моего кода модели формы:
.....
class Form_test extends CFormModel
{
//поля формы засунуты в одно поле массив
public $fieldForm = array();
public function __construct()
{
//наполняем поле-массив имена полей формы (для понятности полученный массив имен укажу прямо в
// конструкторе)
$arrayFielForm('id','field_1','field_2');
foreach($arrayFieldForm as $key => $nameField) {
$this->fieldForm[$nameField] = '';
}
}
..........................
public function rules()
{
return array(
array('fieldForm[field_2]', 'required'),
);
}
.....
при попытке валидации формы в контроллере выскакивает ошибка:
"Не определено свойство Form_test.fieldForm[field_2]"
Подскажите, пожалуйста, кто знает как решить вопрос с валидацией в таком случае?