zf2 更改回调验证器返回的错误代码

zf2 change error code returned by Callback validator

我成功地使用了 ZF2 Callback validator,但它的代码有问题 returns。这里使用的配置:

'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;
            },
        )
    )
),

问题出在错误代码中returns没有消息

它returnscallbackValue这是Callback验证的常量INVALID_VALUE的值class

有没有办法通过选项改变这个值?

我想避免为我必须验证的每个项目编写自定义 class。

我试过了,但这段代码工作得很好:

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'

在您的表单 class 中,在回调函数中获取表单字段并为其设置自定义错误:

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

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

   return false;
}