public function addNameElement() { require_once 'Zend/Form/Element/Text.php'; $element = new Zend_Form_Element_Text($this->getNameParam()); $element->clearDecorators()->addDecorator('viewHelper'); $this->addElement($element); return $this; }
/** * Initialization form */ public function init() { parent::init(); //---------------- Форма ---------------- // Указываем action формы $urlAction = $this->getUrl('edit', 'blogmanager'); $urlAction .= '?id=' . $this->post->getId(); $this->setAction($urlAction); //Зададим метод передачи данных $this->setMethod('post'); // Задаем атрибут class для формы $this->setAttrib('class', 'myfrm'); $this->setAttrib('id', 'blogpost-form'); //------------ Добавим краткое название блога -------------- $elTitle = new Zend_Form_Element_Text('title', array('label' => 'Название', 'maxlength' => '255', 'size' => '60', 'required' => true, 'validators' => array(array('StringLength', true, array(0, 255))), 'filters' => array(array('StringTrim'), array('StripTags')))); //Установим название, если блог существует $this->addElement($elTitle); if ($this->post->profile->title) { $this->setDefault('title', $this->post->profile->title); } //---------------- Дата создания записи в блоге ---------------- // Элемент "Дата создания". Элемент содержит нестандартный декоратор - javascript календарь $elDatePost = new Zend_Form_Element_Text('ts_created', array('label' => 'Дата создания', 'maxlength' => '10', 'required' => true, 'validators' => array(array('Date', true, array('locale' => $this->_language))), 'filters' => array('StringTrim'))); // Удаляем все существующие декораторы, назначенные по умолчанию $elDatePost->clearDecorators(); // Назначаем новые, включая наш декоратор Calendar // Это необходимо для того что бы изображение календаря размещалось сразу за полем ввода $elDatePost->addDecorator('ViewHelper')->addDecorator('Calendar')->addDecorator('Errors')->addDecorator('HtmlTag', array('tag' => 'dd'))->addDecorator('Label', array('tag' => 'dt')); $this->addElement($elDatePost); //Установим дату по умолчанию // $tsCreated = $this->post->ts_created; $locale = Default_Plugin_SysBox::getTranslateLocale(); $format = Default_Plugin_SimpleDate::get_format_display_date($locale); $sd = new Default_Plugin_SimpleDate($this->post->ts_created); $this->setDefault('ts_created', $sd->to_display_date($format)); //---------- Добавим элемент описания сообщения в блоге ------------ //$this->addElement('textarea', 'content', array( $elDescription = new Zend_Form_Element_Textarea('ckeditor_description', array('label' => $this->Translate('Краткое описание сообщения') . ':', 'required' => false, 'validators' => array(), 'filters' => array('Sanitize'))); $this->addElement($elDescription); //Установим краткое описание сообщения, если оно существует if ($this->post->profile->description) { $this->setDefault('ckeditor_description', $this->post->profile->description); } //---------- Добавим элемент содержания блога ------------ //$this->addElement('textarea', 'content', array( $elContent = new Zend_Form_Element_Textarea('ckeditor_content', array('label' => $this->Translate('Ваше сообщение') . ':', 'required' => true, 'filters' => array('Sanitize'))); $this->addElement($elContent); //Установим содержания блога, если оно существует if ($this->post->profile->content) { $this->setDefault('ckeditor_content', $this->post->profile->content); } //-------- Добавим кнопки -------------- //Установим значение кнопки сохранить $this->addElement('submit', 'save', array('ignore' => true, 'label' => 'Сохранить')); $this->getElement('save')->setAttrib('class', 'btn btn-primary'); //Перезапишем стандартные декораторы, для размещения двух кнопок рядом $this->getElement('save')->setDecorators(array('ViewHelper')); //Установим значение кнопки закрыть $this->addElement('submit', 'close', array('ignore' => true, 'label' => 'Закрыть')); $this->getElement('close')->setAttrib('class', 'btn'); //Перезапишем стандартные декораторы, для размещения двух кнопок рядом $this->getElement('close')->setDecorators(array('ViewHelper')); //---------------- Группа данные блога ---------------- // Группируем элементы // Группа полей связанных с авторизационными данными $this->addDisplayGroup(array('title', 'ts_created', 'ckeditor_description', 'ckeditor_content', 'save', 'close'), 'blogDataGroup', array('legend' => 'Подробная информация')); }
/** * Initialization form */ public function init() { // Вызываем родительский метод parent::init(); //---------------- Форма ---------------- // Указываем action формы $urlAction = $this->getUrl('details', 'account'); $this->setAction($urlAction); // Указываем метод формы $this->setMethod('post'); // Задаем атрибут class для формы //$this->setAttrib('class', 'register'); $this->setAttrib('class', 'myfrm'); $this->setAttrib('id', 'details-form'); //---------------- Группа Обновляемые данные пользователя ---------------- // Username Text элемент "Имя входа пользователя". Проверяется на алфавитные символы и цифры, а также на длину // Валидатор Alnum использует установленную локаль для определения алфавита символов. $username = new Zend_Form_Element_Text('username', array('required' => FALSE, 'label' => $this->Translate('Имя входа пользователя') . ' (Login)', 'maxlength' => '30', 'validators' => array(array('Alnum', true, array(true)), array('UserName'), array('NoDbRecordExists', true, array('users', 'username'))), 'filters' => array('StringTrim'))); $this->addElement($username); // Тип пользователя (роль) $user_type = new Zend_Form_Element_Select('user_type', array('required' => FALSE, 'label' => 'Тип пользователя (роль)', 'multiOptions' => array('commentator', 'member', 'editor', 'administrator'), 'validators' => array(array('UserType')), 'filters' => array('StringTrim'))); $this->addElement($user_type); // Признак активности пользователя $actual = new Zend_Form_Element_Select('actual', array('label' => 'Активен', 'description' => 'Активность пользователя позволяет ему заходить на сайт и создавать свои сообщения', 'multiOptions' => array('Да', 'Нет'), 'filters' => array('StringTrim'))); $this->addElement($actual); // Email Используемый собственный элемент App_Form_Element_Email $email = new Default_Form_Element_Email('email', array('required' => FALSE)); // Добавление элемента в форму $this->addElement($email); // Password элемент "Пароль". Значение проверяется валидатором App_Validate_Password $password = new Zend_Form_Element_Password('password', array('required' => FALSE, 'label' => 'Пароль', 'maxlength' => '30', 'validators' => array('PasswordAdmin'))); $this->addElement($password); // Элемент "Подтверждение пароля". // Проверяется на совпадение с полем "Пароль" валидатором App_Validate_EqualInputs $passwordApprove = new Zend_Form_Element_Password('password_approve', array('required' => FALSE, 'label' => 'Подтвердите пароль', 'maxlength' => '30', 'validators' => array(array('EqualInputs', true, array('password'))))); $this->addElement($passwordApprove); //First name user // Text элемент "Имя пользователя". Проверяется на алфавитные символы и цифры, а также на длину // Валидатор Alnum использует установленную локаль для определения алфавита символов. $first_name = new Zend_Form_Element_Text('first_name', array('label' => 'Имя пользователя', 'maxlength' => '150', 'size' => '60', 'validators' => array(array('Alnum', true, array(true)), array('StringLength', true, array(0, 150))), 'filters' => array('StringTrim'))); $this->addElement($first_name); //Last name user // Text элемент "Фамилия пользователя". Проверяется на алфавитные символы и цифры, а также на длину // Валидатор Alnum использует установленную локаль для определения алфавита символов. $last_name = new Zend_Form_Element_Text('last_name', array('label' => 'Фамилия пользователя', 'maxlength' => '150', 'size' => '60', 'validators' => array(array('Alnum', true, array(true)), array('StringLength', true, array(0, 150))), 'filters' => array('StringTrim'))); $this->addElement($last_name); //Дата регистрации пользователя // Элемент "Дата рождения". Элемент содержит нестандартный декоратор - javascript календарь $ts_created = new Zend_Form_Element_Text('ts_created', array('label' => 'Дата регистрации', 'maxlength' => '10', 'required' => FALSE, 'validators' => array(array('Date', true, array('format' => 'yyyy-MM-dd'))), 'filters' => array('StringTrim'))); // Удаляем все существующие декораторы, назначенные по умолчанию $ts_created->clearDecorators(); // Назначаем новые, включая наш декоратор Calendar // Это необходимо для того что бы изображение календаря размещалось сразу за полем ввода $ts_created->addDecorator('ViewHelper')->addDecorator('Calendar')->addDecorator('Errors')->addDecorator('HtmlTag', array('tag' => 'dd'))->addDecorator('Label', array('tag' => 'dt')); $this->addElement($ts_created); //---------------- Настройки профиля ---------------- // "Кол. сообщений в блоге" $num_posts = new Zend_Form_Element_Text('num_posts', array('label' => 'Количество сообщений в блоге', 'description' => 'Количество сообщений в блоге, которое Вы хотели бы показать, на вашей домашней странице', 'maxlength' => '20', 'size' => '20', 'validators' => array(array('Int'), array('StringLength', true, array(0, 20))), 'filters' => array('StringTrim'))); $this->addElement($num_posts); // Признак публикации сообщений $blog_public = new Zend_Form_Element_Select('blog_public', array('label' => 'Публиковать Ваши сообщения?', 'description' => 'Хотите ли вы позволить просматривать ваши сообщения незарегистрированным пользователям?', 'multiOptions' => array('Нет', 'Да'), 'filters' => array('StringTrim'))); $this->addElement($blog_public); //---------------- Группа публичные данные пользователя ---------------- //First name user // Text элемент "Имя пользователя". Проверяется на алфавитные символы и цифры, а также на длину // Валидатор Alnum использует установленную локаль для определения алфавита символов. $public_first_name = new Zend_Form_Element_Text('public_first_name', array('label' => 'Имя пользователя', 'maxlength' => '150', 'size' => '60', 'validators' => array(array('Alnum', true, array(true)), array('StringLength', true, array(0, 150))), 'filters' => array('StringTrim'))); $this->addElement($public_first_name); //Last name user // Text элемент "Фамилия пользователя". Проверяется на алфавитные символы и цифры, а также на длину // Валидатор Alnum использует установленную локаль для определения алфавита символов. $public_last_name = new Zend_Form_Element_Text('public_last_name', array('label' => 'Фамилия пользователя', 'maxlength' => '150', 'size' => '60', 'validators' => array(array('Alnum', true, array(true)), array('StringLength', true, array(0, 150))), 'filters' => array('StringTrim'))); $this->addElement($public_last_name); // Email Используемый собственный элемент App_Form_Element_Email $public_email = new Default_Form_Element_Email('public_email', array('required' => FALSE)); // Добавление элемента в форму $this->addElement($public_email); //Public home phome // Text элемент "домашний телефон пользователя". Проверяется на цифры, а также на длину // 14 символов -> 0 380 044 XXX-XXXX $public_home_phone = new Zend_Form_Element_Text('public_home_phone', array('label' => 'Домашний телефон', 'maxlength' => '14', 'size' => '20', 'validators' => array(array('Int'), array('StringLength', true, array(0, 14))), 'filters' => array('StringTrim'))); $this->addElement($public_home_phone); //Public home phome // Text элемент "рабочий телефон пользователя". Проверяется на цифры, а также на длину // 14 символов -> 0 380 044 XXX-XXXX $public_work_phone = new Zend_Form_Element_Text('public_work_phone', array('label' => 'Рабочий телефон', 'maxlength' => '14', 'size' => '20', 'validators' => array(array('Int'), array('StringLength', true, array(0, 14))), 'filters' => array('StringTrim'))); $this->addElement($public_work_phone); //Public home phome // Text элемент "мобильный телефон пользователя". Проверяется на цифры, а также на длину // 14 символов -> 096 XXXX XXX $public_mobile_phone = new Zend_Form_Element_Text('public_mobile_phone', array('label' => 'Мобильный телефон', 'maxlength' => '10', 'size' => '20', 'validators' => array(array('Int'), array('StringLength', true, array(0, 10))), 'filters' => array('StringTrim'))); $this->addElement($public_mobile_phone); //---------------- Submit ---------------- // Кнопка Submit $submit = new Zend_Form_Element_Submit('send', array('label' => 'Сохранить')); // Перезаписываем декораторы, что-бы //перезаписать стандартный набор декораторов для кнопки 'submit' $submit->setDecorators(array('ViewHelper')); $this->addElement($submit); //---------------- Группа Обновляемые данные пользователя ---------------- // Группируем элементы // Группа полей связанных с авторизационными данными $this->addDisplayGroup(array('username', 'user_type', 'actual', 'email', 'first_name', 'last_name', 'password', 'password_approve', 'ts_created'), 'authDataGroup', array('legend' => 'Личные данные пользователя')); //---------------- Группа настроек профиля ---------------- // Группа полей связанных с настройками профиля $this->addDisplayGroup(array('num_posts', 'blog_public'), 'configProfile', array('legend' => 'Настройки профиля')); //---------------- Группа Публичные данные пользователя ---------------- // Группа полей связанных с личной информацией $this->addDisplayGroup(array('public_first_name', 'public_last_name', 'public_email', 'public_home_phone', 'public_work_phone', 'public_mobile_phone'), 'publicDataGroup', array('legend' => 'Публичные данные пользователя')); //---------------- Группа полей кнопок ---------------- // Группа полей кнопок $this->addDisplayGroup(array('send'), 'buttonsGroup'); }
public function addLastnameElement($default = '') { require_once 'Zend/Validate/NotEmpty.php'; $notEmpty = new Zend_Validate_NotEmpty(); $notEmpty->setMessages(array(Zend_Validate_NotEmpty::IS_EMPTY => $this->getTranslator()->translate('accountFormHintLastnameNotEmpty'))); require_once 'Zend/Form/Element/Text.php'; $element = new Zend_Form_Element_Text($this->getLastnameParam()); $element->clearDecorators()->addDecorator('viewHelper')->addValidator($notEmpty)->setValue($default)->setRequired(true); $this->addElement($element); return $this; }