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));
 }
Beispiel #2
0
 /**
  * Инициализация формы, установка элементов
  *
  * @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);
 }