zend 1.12 $ form-> isValid始终为true

时间:2013-07-10 15:56:42

标签: forms zend-framework

即使用户名输入为空,此行也始终返回

if ($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) {

我的表单用户名输入如下所示

<?php
$this->addElement(new Zend_Form_Element_Text('username'));
$this->addElement('text','username',
                 array('class' => 'input-large',
                 'value' => $this->user_login,
                 'attribs'    => array('disabled' => 'disabled') /// it can be activated by button in view
));

    $username = new Zend_Form_Element_Text('username');
    $username->addValidator ( new Zend_Validate_NotEmpty() );
?>

但是像这样的东西

$validator = new Zend_Validate_NotEmpty();
          $data = $_POST['username'];
          if($validator->isValid($data)) {

            echo 'sweet';

          }else {

            echo 'bad';
          }

1 个答案:

答案 0 :(得分:0)

将元素设置为必需而不是添加验证器:

$this->addElement('text','username', array(
    'class' => 'input-large',
    'value' => $this->user_login,
    'attribs' => array('disabled' => 'disabled'),
    'required' => true
));

原因是表单元素具有默认启用的“allow empty”标志,并且启用此标志后,将不使用您的验证器。我解释了为什么在这个问题中就是这种情况:Zend Framework notEmpty validator setRequired。设置所需的标志会自动添加NotEmpty验证器并更改标志。

相关问题