Validation addValidator如何与Zend表单一起工作?

Validation addValidator如何与Zend表单一起工作?,validation,zend-form,Validation,Zend Form,我认为$form->addVlidator函数可以作为前端表单检查功能使用,但是当我添加它时,即使输入无效,表单似乎仍在提交中 或者我错了,这更多的是控制器端检查,这意味着表单将提交数据,无论服务器端返回什么错误消息 我的代码是这样工作的 表格类别: <?php class Application_Form_Test extends Zend_Form { public function init() { $this->setName('stdFo

我认为$form->addVlidator函数可以作为前端表单检查功能使用,但是当我添加它时,即使输入无效,表单似乎仍在提交中

或者我错了,这更多的是控制器端检查,这意味着表单将提交数据,无论服务器端返回什么错误消息

我的代码是这样工作的

表格类别:

<?php
class Application_Form_Test extends Zend_Form

{
    public function init()
    {

        $this->setName('stdForm');
        //$this->setMethod('post');
        //$this->addDecorator('HtmlTag', array('tag' => 'div', 'class' => 'my-lovely-form'));
        $this->setAttrib('enctype', 'multipart/form-data');

        $this->setAction('somewhere')
             ->setMethod('post');


        $username = $this->createElement('text', 'name', array('label' => 'Username:'));
        $username->addValidator('alnum')
                 ->addValidator('regex', false, array('/^[a-z]+/'))
                 ->addValidator('stringLength', false, array(9, 20, 'messages'=>'Cannot be more than 9 chars'))
                 ->setRequired(true)
                 ->addFilter('StringToLower');

        $email = $this->createElement('text', 'email', array('label' => 'E-mail'));
        $email->addValidator('StringLength', false, array(8))
                 ->setRequired(true);

        $password = $this->createElement('password', 'pass1', array('label' => 'Password'));
        $password->addValidator('StringLength', false, array(6))
                 ->setRequired(true);

         $password2 = $this->createElement('password', 'pass2', array('label' => 'Repeat password'));
         $password2->addValidator('StringLength', false, array(6))
                 ->setRequired(true);

         $message = $this->createElement('textarea', 'message', array('label' => 'Message'));
         $message->addValidator('StringLength', false, array(6))
                 ->setRequired(true)
                 ->setAttrib('COLS', '40')
                 ->setAttrib('ROWS', '4');

            $captcha = new Zend_Form_Element_Captcha('foo', array(
                'label' => "human?",
                'captcha' => 'Figlet',
                'captchaOptions' => array(
                    'captcha' => 'Figlet',
                    'wordLen' => 6,
                    'timeout' => 300,
                ),
            ));

        // Add elements to form:
        $this->addElement($username)
             ->addElement($email)   
             ->addElement($password)
             ->addElement($password2)
             ->addElement($message)
             ->addElement($captcha)
             // use addElement() as a factory to create 'Login' button:
             ->addElement('submit', 'send', array('label' => 'Form sender'));

    }
}
查看文件:

    <?php echo  $this->testForm;?>   

第二条:“表单将提交数据,然后服务器端返回错误消息”。为此,您必须在操作中调用
$form->isValid($this->\u request->getPost())

如果无效,则需要将数据发送回用户:

$form->populate($this->_request->getPost());
$this->view->form = $form;
对于客户端验证,您可以使用

$form->populate($this->_request->getPost());
$this->view->form = $form;