2015-04-02 55 views
1

我成功使用ZF2 Callback validator,但是我遇到了它返回的代碼的問題。這裏的配置使用:zf2通過回撥驗證器返回錯誤代碼

'validators'=>array(
    array(
     'name' => 'Callback', 
     'options' => array(
      'messages'=>array(
       Callback::INVALID_VALUE => 'Error', 
      ), 
      'callback' => function ($value,$context=array()) { 
       if(empty($value) && empty($context['company'])){ 
        $isValid = false; 
       }else{ 
        $isValid = true; 
       } 
       return $isValid; 
      }, 
     ) 
    ) 
), 

問題是在不返回任何消息

它返回callbackValue這是Callback驗證類的常量INVALID_VALUE值的錯誤代碼

有通過選項更改此值的方法?

我想避免爲我必須驗證的每個項目編寫自定義類。

回答

0

我試過,但這個代碼工作完全正常:

use Zend\Validator\Callback; 

..... 

array(
    'name' => 'Callback', 
    'options' => array(
     'messages' => array(
      Callback::INVALID_VALUE => 'My custom message', 
      Callback::INVALID_CALLBACK => 'My custom message' 
     ), 
     'callback' => function(){ 
       return false; 
      } 
    ) 
) 

消息的關鍵是:callbackValue,但我得到的消息是'My custom message'

+0

我寫我需要有一個不同的密鑰,而不是信息 – ciro 2015-04-03 09:05:00

+0

@ciro - 也就是說沒有可能。你將不得不讓自己的驗證器能夠自定義密鑰的名稱。 – Wilt 2015-04-03 09:18:38

+0

謝謝。我寫它。 – ciro 2015-04-03 09:47:32

0
在你的窗體類

,你的回調函數中獲得表單字段併爲它設置一個自定義錯誤:

... 
'callback' => function(){ 
    ... 
    // validation logic returns 
    // one of the possible messages into $message 

    $this->getInputFilter() 
     ->get('<FieldName>') 
     ->setErrorMessage($message); 

    return false; 
}