/** * Функция создание формы * @param type $objForm объект формы * @param type $elementsForm элементы в виде массива * @return type объект формы */ protected function createFormElements($objForm, $elementsForm) { foreach ($elementsForm as $key => $value) { // определяем тип по умолчанию $type = !empty($value['type']) ? $value['type'] : 'text'; // массив с опциями $params = array(); if ($type !== 'hidden') { $params['label'] = !empty($value['label']) ? $value['label'] : die('Не оределлен атрибут label!'); } $params['decorators'] = !empty($value['decorators']) ? $value['decorators'] : $this->elementDecorators(); if (!empty($value['multiOptions'])) { $params['multiOptions'] = $value['multiOptions']; } $value['required'] = !empty($value['required']) ? $value['required'] : true; $value['attribs'] = !empty($value['attribs']) ? $value['attribs'] : array('class' => 'form-control'); $value['filters'] = !empty($value['filters']) ? $value['filters'] : ''; $value['validators'] = !empty($value['validators']) ? $value['validators'] : ''; // присваевыем стандартные фильтры и валидаторы if (empty($value['filters'])) { $stringTrim = new Zend_Filter_StringTrim(); $stripTags = new Zend_Filter_StripTags(); $value['filters'] = array('stringTrim' => $stringTrim, 'stripTags' => $stripTags); } if (empty($value['validators'])) { $alnum = new Zend_Validate_Alnum(); $alnum->setMessage('Только буквы и цыфры!'); $notEmpty = new Zend_Validate_NotEmpty(); $notEmpty->setMessage('Поле обязательно для заполнения', 'isEmpty'); $value['validators'] = array('alnum' => $alnum, 'notEmpty' => $notEmpty); } // провеки на тип если нужен новый то надо добавить по аналогии switch ($type) { case 'text': $elem = new Zend_Form_Element_Text($key); break; case 'textarea': $elem = new Zend_Form_Element_Textarea($key); break; case 'select': $elem = new Zend_Form_Element_Select($key); break; case 'password': $elem = new Zend_Form_Element_Password($key); break; case 'hidden': $elem = new Zend_Form_Element_Hidden($key); break; case 'radio': $elem = new Zend_Form_Element_Radio($key); break; } // присваиваем атрибуты if (!empty($value['attribs'])) { foreach ($value['attribs'] as $k => $val) { $params[$k] = $val; } } // присваиваем опции if (!empty($elem)) { $elem->setOptions($params); } // добавляем валидаторы if (!empty($value['validators']) && $type !== 'hidden') { foreach ($value['validators'] as $val) { $elem->addValidator($val); } } // добавляем фильтры if (!empty($value['filters']) && $type !== 'hidden') { foreach ($value['filters'] as $val) { $elem->addFilter($val); } } // вот тут писец if (!empty($value['required']) && $type !== 'hidden') { $elem->setRequired(TRUE); } // добавляем элемент на форму $objForm->addElement($elem); } // добавляем кнопку $objForm->addElement('submit', 'submit', array('label' => $this->buttonLabel, 'decorators' => $this->buttonDecorators(), 'class' => 'btn btn-default')); return $objForm; }