public function init() { //логин пользователя $txtLog = new Zend_Dojo_Form_Element_ValidationTextBox(array('name' => 'username', 'label' => 'Имя пользователя (логин) (*)', 'required' => true, 'trim' => true, 'regExp' => AuthModel::LOGIN_PARTIAL_REGEX, 'invalidMessage' => 'Допускаются символы латинского алфавита, знак подчёркивания и минус. Длина от 3 до 32х символов')); //правильный валидатор имени пользователя в соответсвии с требованиями. $txtLog->addValidator('regex', true, array(AuthModel::LOGIN_REGEX)); $txtPwd = new Zend_Dojo_Form_Element_PasswordTextBox(array('name' => 'password', 'label' => 'Пароль (проверьте текущую раскладку клавиатуры и состояние клавиши CapsLock) (*)', 'required' => true, 'regExp' => AuthModel::PWD_PARTIAL_REGEX, 'invalidMessage' => 'Пароль должен быть не менее ' . AuthModel::PWD_MIN_LEN . ' знаков и не более ' . AuthModel::PWD_MAX_LEN . ' знаков длиной')); $txtPwd->addFilter('StringTrim'); $txtPwd2 = new Zend_Dojo_Form_Element_PasswordTextBox(array('name' => 'password2', 'label' => 'Повторите пароль (*)', 'required' => true, 'regExp' => AuthModel::PWD_PARTIAL_REGEX, 'invalidMessage' => 'Повторно введённый пароль не совпадает с исходным!')); $txtPwd2->addFilter('StringTrim'); $txtEmail = new Zend_Dojo_Form_Element_ValidationTextBox(array('name' => 'email', 'label' => 'Электронная почта (*). Используется только внутри сайта для получения уведомлений о новых комментариях, смены пароля и прочих служебных действий. Третьим лицам не передаётся.', 'required' => true, 'trim' => true, 'regExp' => AuthModel::EMAIL_PARTIAL_REGEX, 'invalidMessage' => 'Вероятно, введённая строка не явлется адресом почты. Укажите правильный адрес')); $txtEmail->addFilter('StringToLower'); $txtEmail->addValidator('StringLength', true, array(0, AuthModel::EMAIL_MAX_LEN))->addValidator('EmailAddress', true); $bShowEmail = new Zend_Dojo_Form_Element_CheckBox(array('name' => 'bshowemail', 'label' => 'Показывать другим пользователям Ваш email?', 'checkedValue' => '1', 'uncheckedValue' => '0', 'checked' => false)); $bShowEmail->addValidator('regex', true, array('/^0|1$/')); $txtName = new Zend_Dojo_Form_Element_ValidationTextBox(array('name' => 'name', 'label' => 'Ваше имя', 'trim' => true, 'regExp' => '^.{0,' . AuthModel::NAME_MAX_LEN . '}$', 'invalidMessage' => 'Длина поля ограничена ' . AuthModel::NAME_MAX_LEN . ' символами')); $txtName->addValidators(array(array(new Zend_Validate_StringLength(0, AuthModel::NAME_MAX_LEN), true))); //страна $txtCountry = new Zend_Dojo_Form_Element_ValidationTextBox(array('name' => 'country', 'label' => 'Страна', 'trim' => true, 'regExp' => '^.{0,' . AuthModel::VAR_FIELD_MAX_LEN . '}$', 'invalidMessage' => 'Длина поля ограничена ' . AuthModel::VAR_FIELD_MAX_LEN . ' символами')); $varFieldLengthVld = array(new Zend_Validate_StringLength(0, AuthModel::VAR_FIELD_MAX_LEN), true); $txtCountry->addValidators(array($varFieldLengthVld)); $txtCity = new Zend_Dojo_Form_Element_ValidationTextBox(array('name' => 'city', 'label' => 'Город', 'trim' => true, 'regExp' => '^.{0,' . AuthModel::VAR_FIELD_MAX_LEN . '}$', 'invalidMessage' => 'Длина поля ограничена ' . AuthModel::VAR_FIELD_MAX_LEN . ' символами')); $txtCity->addValidators(array($varFieldLengthVld)); $birthday = new Zend_Dojo_Form_Element_DateTextBox(array('name' => 'birthday', 'label' => 'Ваш день рождения', 'invalidMessage' => 'Указана неверная дата', 'formatLength' => 'long')); $birthday->addValidator('Date', true); $cIcq = new Zend_Dojo_Form_Element_ValidationTextBox(array('name' => 'cicq', 'label' => 'Номер ICQ', 'trim' => true, 'regExp' => '^\\d{0,' . AuthModel::ICQNUM_MAX_CHARS . '}$', 'invalidMessage' => 'Номер ICQ должен являться числом')); $cIcq->addValidators(array(array('StringLength', true, array(0, AuthModel::ICQNUM_MAX_CHARS)), array('Digits', true))); $cSkype = new Zend_Dojo_Form_Element_TextBox(array('name' => 'cskype', 'label' => 'Skype', 'trim' => true)); $cSkype->addValidators(array($varFieldLengthVld)); $captcha = new Zend_Form_Element_Captcha('turingtest', array('label' => "Captcha", 'captcha' => 'ReCaptcha', 'captchaOptions' => array('privKey' => '6Lf9xQMAAAAAAGt9yhFNmsuemMpAzefPc0qDrxmo', 'pubKey' => '6Lf9xQMAAAAAAN9DCeBc_x8ZAK7hKtQrozTF6KAa'))); //делаем язык. через жопу $captcha->getCaptcha()->getService()->setOption('lang', 'ru'); $btnSubmit = new Zend_Dojo_Form_Element_SubmitButton(array('name' => 'register', 'label' => 'Register!')); //добавляем onSubmit, потому что требуется там ручками обрабатывать значение чекбокса - оно почему-то не меняется. //задаём проверочную функцию $this->setAttrib('onsubmit', "dojo.byId('bshowemail').value = dijit.byId('bshowemail').attr('checked') ? '1' : '0'; return true;"); $this->setAttrib('id', 'regForm'); $this->addElements(array($txtLog, $txtPwd, $txtPwd2, $txtEmail, $bShowEmail, $txtName, $txtCountry, $txtCity, $birthday, $cIcq, $cSkype, $captcha, $btnSubmit)); }
/** * Инициализация формы, установка элементов * * @see Zend_Form::init() * @return void */ public function init() { $this->setAction($this->getView()->url(array('controller' => 'applicant', 'action' => 'edit'))); $this->setMethod('post'); $this->setAttrib('enctype', 'multipart/form-data'); $LastName = $this->createElement('text', 'LastName'); $LastName->setLabel('[LS_FORM_EDIT_LASTNAME_LABEL]'); $LastName->setRequired(true); $LastName->addValidator('Alpha', true); $LastName->addValidator('StringLength', true, array(2, 25)); $LastName->addFilters(array('StringTrim', 'HtmlEntities')); $this->addElement($LastName); $Name = $this->createElement('text', 'Name'); $Name->setLabel('[LS_FORM_EDIT_NAME_LABEL]'); $Name->setRequired(true); $Name->addValidator('Alpha', true); $Name->addValidator('StringLength', true, array(2, 25)); $Name->addFilters(array('StringTrim', 'HtmlEntities')); $this->addElement($Name); $Patronymic = $this->createElement('text', 'Patronymic'); $Patronymic->setLabel('[LS_FORM_EDIT_PATRONYMIC_LABEL]'); $Patronymic->setRequired(true); $Patronymic->addValidator('Alpha', true); $Patronymic->addValidator('StringLength', true, array(2, 25)); $Patronymic->addFilters(array('StringTrim', 'HtmlEntities')); $this->addElement($Patronymic); $Birth = new Zend_Dojo_Form_Element_DateTextBox('Birth', array('required' => true, 'label' => '[LS_FORM_EDIT_BIRTH_LABEL]')); $Birth->setDatePattern('dd.MM.yyyy'); $Birth->addValidator('Date'); $this->addElement($Birth); $vacancySelect = $this->createElement('select', 'VacancyId'); $vacancySelect->setLabel('[LS_FORM_EDIT_VACANCY_LABEL]'); $this->addElement($vacancySelect); $Email = $this->createElement('text', 'Email'); $Email->setLabel('[LS_FORM_EDIT_EMAIL_LABEL]'); $Email->setRequired(true); $Email->addValidator('StringLength', true, array(3, 100)); $Email->addValidator('EmailAddress', true); $Email->addFilters(array('StringTrim', 'HtmlEntities')); $this->addElement($Email); $Phone = $this->createElement('text', 'Phone'); $Phone->setLabel('[LS_FORM_EDIT_PHONE_LABEL]'); $Phone->setRequired(true); $Phone->addValidator('StringLength', true, 10); $Phone->addFilters(array('StringTrim', 'HtmlEntities')); $this->addElement($Phone); $Resume = $this->createElement('textarea', 'Resume'); $Resume->setLabel('[LS_FORM_EDIT_RESUME_LABEL]'); $Resume->setRequired(true); $Resume->setAttrib('cols', '50'); $Resume->setAttrib('rows', '5'); $Resume->addValidator('StringLength', true, array(1, 10000)); $Resume->addFilters(array('StringTrim', 'HtmlEntities')); $this->addElement($Resume); $Photo = $this->createElement('file', 'Photo'); $Photo->setLabel('[LS_FORM_EDIT_PHOTO_LABEL]'); $Photo->setMaxFileSize(1024000); $Photo->addValidator('Count', false, 1); $Photo->addValidator('Size', false, 1024000); $Photo->addValidator('Extension', false, 'jpg,png,gif'); $Photo->setDestination(UPLOAD_PATH); $this->addElement($Photo); $applicantId = $this->createElement('hidden', 'applicantId'); $this->addElement($applicantId); $submit = $this->createElement('submit', 'save', array('label' => '[LS_FORM_SUBMMIT_SAVE]')); $this->addElement($submit); }