2015-04-02 56 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; 
}