не могу понять, как проверить zend_form - PullRequest
1 голос
/ 08 июля 2010

Я пытаюсь выяснить, как получить эту Zend форму для проверки.Я не понимаю:

Являются ли аргументы addValidator () конкретными валидаторами?Есть ли где-нибудь список этих валидаторов?

Я получил это в формах / contact.php:

класс Application_Form_Contact extends Zend_Form {

public function init()
{
    $this->setAction('index/process');
    $this->setMethod('post');

    $name = new Zend_Form_Element_Text('name');
    $name->setLabel('Name:');
//  $name->addValidator('alnum');
    $name->setRequired(true);

    $email = new Zend_Form_Element_Text('email');
    $email->setLabel('Email:')->setRequired(true);

    $confirm = new Zend_Form_Element_Text('confirm');
    $confirm->setLabel('Confirm Email:')->setRequired(true);

    $phone = new Zend_Form_Element_Text('phone');
    $phone->setLabel('Phone:')->setRequired(true);

    $subject = new Zend_Form_Element_Select('subject');
    $subject->setLabel('Subject:')->setRequired(true);
    $subject->setMultiOptions(array('Performance'=>'Performance', 
                                    'Workshop'=>'Workshop',
                                    'Other'=>'Other'
                                ));


    $message = new Zend_Form_Element_Textarea('message');
    $message->setLabel('Message:')->setRequired(true);
    $message->setAttrib('rows','6');
    $message->setAttrib('cols','30');

    $submit = new Zend_Form_Element_Submit('Submit');



    $this->addElements(array(   $name, 
                    $email,
                    $confirm, 
                    $phone, 
                    $subject, 
                    $message,
                    $submit 
));


           $this->setElementDecorators(array
        ('ViewHelper',

        array(array('data' => 'HtmlTag'), array('tag' => 'td')), 
        array('Label' , array('tag' => 'td')), 
        array(array('row' => 'HtmlTag') , array('tag' => 'tr'))

        ));

    $submit->setDecorators(array('ViewHelper',

         array(array('data' => 'HtmlTag'), array('tag' => 'td')),
         array(array('emptyrow' => 'HtmlTag'), array('tag' => 'td', 'placement' => 'PREPEND')),
         array(array('row' => 'HtmlTag') , array('tag' => 'tr'))
        ));                 

    $this->setDecorators(array(
        'FormElements',

        array('HtmlTag' , array('tag' => 'table' , 'class' => 'formTable')),
        'Form'
    )
    );
}
}

мой контроллерэто:

public function indexAction()
{

    $this->view->form = new Application_Form_Contact();

}

public function processAction()
{
//              $this->view->form = new Application_Form_Contact();
//    
     if ($this->_request->isPost()) {
                $formData = $this->_request->getPost();

            //  echo 'success';
                $this->view->data = $formdata;

            }   else {
        //        $form->populate($formData);
            }


}

Я новичок, поэтому я, вероятно, делаю некоторые очевидные ошибки, которые я не вижу.Я пытаюсь выполнить базовую проверку:

  • все поля должны быть заполнены
  • все html будет удален
  • email и подтвердить
  • emailполя должны соответствовать
  • адрес электронной почты должен быть в правильном формате.

Любая помощь будет принята с благодарностью!

1 Ответ

5 голосов
/ 08 июля 2010

Вы пробовали isValid ()?:

$form = new forms_ContactForm();

    if ($this->_request->isPost()) {
        $formData = $this->_request->getPost();
        if ($form->isValid($formData)) {
            echo 'success';
            exit;
        } else {
            $form->populate($formData);
        }
    }

    $this->view->form = $form;

из

О средствах проверки:

$firstName = new Zend_Form_Element_Text('firstName');
    $firstName->setLabel('First name')
              ->setRequired(true)
              ->addValidator('NotEmpty');

    $lastName = new Zend_Form_Element_Text('lastName');
    $lastName->setLabel('Last name')
             ->setRequired(true)
             ->addValidator('NotEmpty');

    $email = new Zend_Form_Element_Text('email');
    $email->setLabel('Email address')
          ->addFilter('StringToLower')
          ->setRequired(true)
          ->addValidator('NotEmpty', true)
          ->addValidator('EmailAddress'); 

Вот ссылка надокументация Zend о Zend fiorms и валидаторах. Создание элементов формы с использованием Zend_Form_Element

...