2016-11-03 15 views
0

一般的なエラーメッセージを変更したいISBNフィールドが必要です。私はカスタムエラーメッセージを設定しています。Zend Framework 2に必要なカスタム検証エラーメッセージが表示されます

use Zend\Form\Element; 
use Zend\Form\Fieldset; 
use Zend\Validator; 
use Zend\InputFilter\InputFilterProviderInterface; 
use Zend\Stdlib\Hydrator\ClassMethods as ClassMethodsHydrator; 

class BookItemFieldset extends Fieldset implements InputFilterProviderInterface 
{ 
    public $Types; 

    public function __construct($itemName, $Types) 
    { 

     parent::__construct($itemName, $Types); 

     $this->Types = $Types; 

     // .. Other fields 

     $bookISBN = new Element\Number('bookISBN'); 
     $bookISBN->setLabel('Book ISBN ') 
      ->setAttribute('id', 'bookISBN'); 

     // .. more fields 

     $this->add($bookISBN); 
    } 

    public function getInputFilterSpecification() 
    { 
     return array(

      'bookISBN' => array(
       'required' => true, 
       'validators' => array(
        new Validator\NotEmpty(array(
          'setMessage'=> 'ISBN is Required' 
        ) 
       ), 
        new Validator\Isbn(array(
         'setMessage'=> 'ISBN is Invalid' 
       )), 

      ) 
      ), 
      //... more input filters 

     ); 

    } 
} 

しかし、フィールドを空白のままにするとき:フィルタが正しくカスタムエラーメッセージを検証して示したモデルfieldSetgetInputFilterSpecification()機能の一部です。 「ISBN is Invalid」と「ISBN is required」の両方のメッセージが表示されます。

フィールドが空白の場合に必要なエラーメッセージのみを表示する方法はありますか?次のような

何か:

'bookISBN' => array(
     'required' => array(
      'required' => true, 
      'setMessage' => 'ISBN is required' // Only this shows if field is empty 
     ), 
     'validators' => array(
      new Validator\Isbn(array(
       'setMessage'=> 'ISBN is Invalid' // only this shows if the input is invalid 
      )), 

     ) 
    ), 

感謝。

+0

完全なコードを入力してください。上記のコードはinputFilter関数の一部ではないと私は信じています。 – ksoni

+0

@ KamalSoni、コードを追加しました。 'inputFilter'はエンティティの' FieldSet'の一部です – Jake

答えて

1

チェーンを壊す必要があります。これをtrueに設定すると、デフォルトではZendによってfalseに設定されます。下のコードが動作するか試してみてください。

public function getInputFilterSpecification() 
    { 
     return array(

      'bookISBN' => array(
       'required' => true, 
       'validators' => array(
        array(
        'name' => 'not_empty', 
        'break_chain_on_failure' => true, 
        'options' => array(
         'messages' => array(
           \Zend\Validator\NotEmpty::IS_EMPTY => 'ISBN is required', 
         ), 
        ), 
       ), 
        new Validator\Isbn(array(
         'setMessage'=> 'ISBN is Invalid' 
       )), 

      ) 
      ), 
      //... more input filters 

     ); 

    } 

「NotEmpty」である可能性があります。私はそれをテストすることはできません。

public function getInputFilterSpecification() 
    { 
     return array(

      'bookISBN' => array(
       'required' => true, 
       'validators' => array(
        array(
        'name' => 'NotEmpty', 
        'break_chain_on_failure' => true, 
       ), 
        new Validator\Isbn(array(
         'setMessage'=> 'ISBN is Invalid' 
       )), 

      ) 
      ), 
      //... more input filters 

     ); 

    } 
+0

はい!それは働いた(両方)。それはデフォルトの '値が必要であり、空ではありません 'というメッセージのみを表示するようになりました。カスタムエラーメッセージでサンプルを更新できますか? – Jake

+0

@Jakeカスタムメッセージコードを今追加しました – ksoni

+0

完璧な感謝! – Jake

関連する問題