0

ユーザー名の入力が空の場合でも、この行は常に true を返します

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';
          }
4

1 に答える 1

0

バリデーターを追加する代わりに、要素を必須に設定します。

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

その理由は、フォーム要素にはデフォルトで有効になっている「空の許可」フラグがあり、このフラグがオンになっていると、バリデーターが使用されないためです。これがこの質問に当てはまる理由を説明しました: Zend Framework notEmpty validator setRequired . 代わりに必須フラグを設定すると、バリデーターが自動的に追加されNotEmpty、フラグが変更されます。

于 2013-07-10T16:09:02.693 に答える