3

フォーム/ video.phpに次のコードスニペットがあります。しかし、私はどこに必要な検証メッセージを追加するか分からない。Zend Framework 1.11の入力に必要なエラーメッセージを追加するには?

$this->addElement('text','name', array(
     'label'=>'Name', 
     'maxlength'=>20, 
     'class'=>'name', 
     'required'=>true, 
     'filters'=>array('StringTrim'), 
     'decorators'=>array(
      'ViewHelper', 
      'Errors', 
      array(array('control'=>'HtmlTag'), array('tag'=>'div', 'class'=>'fieldcontrol')), 
      array('Label', array('tag'=>'div', 'class'=>'name')), 
      array(array('row'=>'HtmlTag'), array('tag' => 'div', 'class'=>'row')), 
     ) 
    )); 

「値は必須で空ではありません」の代わりに、「名前を入力してください」などの設定をしたいと思います。

+1

ここには非常によく似た質問があります:http://stackoverflow.com/questions/459921/zend-form-nicely-change-setrequired-validate-message面白い答えがそこにあるはずです。 – dinopmi

+0

私はそれが似ていることを理解していますが、私の場合、$ this-> addElementに引数として要素全体を検証しながら追加しています。 addElementアプローチを使用することはできませんか?申し訳ありませんが、私はZFに新しいです。 –

答えて

5

を、私は仕事にこれを得た:

$this->addElement('text', 'age', array(
      'label'=>'Age', 
      'maxlength'=>2, 
      'class'=>'age', 
      'required'=>true, 
      'filters'=>array('StringTrim'), 
      'validators'=>array(
       array(
        'validator'=>'NotEmpty', 
        'options'=>array(
         'messages'=>'Please enter your age.' 
        ), 
        'breakChainOnFailure'=>true 
       ), 
       array(
        'validator'=>'Int', 
        'options'=>array(
         'messages'=>'Age must be a number.' 
        ), 
        'breakChainOnFailure'=>true 
       ), 
       array(
        'validator'=>'between', 
        'options'=>array(
         'min'=>8, 
         'max'=>10, 
         'messages'=>array(
          Zend_Validate_Between::NOT_BETWEEN => 'This is for %min% to %max% years old.' 
         ) 
        ) 
       ), 

      ), 
      'decorators'=>array(
       'ViewHelper', 
       'Errors', 
       array(array('control'=>'HtmlTag'), array('tag'=>'div', 'class'=>'fieldcontrol')), 
       array('Label', array('tag'=>'div', 'class'=>'age')), 
       array(array('row'=>'HtmlTag'), array('tag' => 'div', 'class'=>'row')), 
      ), 
     )); 
+0

ZF2.2の場合は、 'array( 'name' => 'NotEmpty'、 'options' =>配列( 'messages' => 'あなたの年齢を入力してください')、 'break_chain_on_failure' => true) ' – herophuong

+0

@herophuong ZF2ではなくOKです –

0

Editted

これはそれを行う必要があります。最後に

... 
$name = $this->getElement('name')->addErrorMessage('Please enter your name'); 
... 
+0

$ this-> addElement(...) - > addErrorMessage( 'エラーメッセージ')を参照している場合、$ this-> addElementとして機能しないものは、フォームではなくフォーム自体を返します。 –

1

私はおそらくデフォルトにrequiredセットを離れると、代わりにNotEmptyバリデータを使用してください。

$this->addElement('text', 'age', array(
      'label'=>'Age', 
      'maxlength'=>2, 
      'class'=>'age', 
      'filters'=>array('StringTrim'), 
      'validators'=>array(
       array(
        'validator'=>'Int', 
        'options'=>array(
         'messages'=>'Age must be a number.' 
        ) 
       ), 
       array(
        'validator'=>'NotEmpty', 
        'options'=>array(
         'messages'=>'Please enter your age.' 
        ) 
       ), 
       array(
        'validator'=>'between', 
        'options'=>array(
         'min'=>8, 
         'max'=>10, 
         'messages'=>array(
          Zend_Validate_Between::NOT_BETWEEN => 'Your age must be between %min% to %max%.' 
         ) 
        ) 
       ) 
      ), 
      'decorators'=>array(
       'ViewHelper', 
       'Errors', 
       array(array('control'=>'HtmlTag'), array('tag'=>'div', 'class'=>'fieldcontrol')), 
       array('Label', array('tag'=>'div', 'class'=>'age')), 
       array(array('row'=>'HtmlTag'), array('tag' => 'div', 'class'=>'row')), 
      ), 
     )); 

NotEmpty()isRequired()と本質的に同じことを行いますがisRequired()がちょうどZend_Form_Elementに設定されるフラグである実際のバリデータがあります。また、あなたのメッセージを混乱させるべきではありません。

関連する問題