zf2更改Callback验证程序返回的错误代码

时间:2015-04-02 15:37:46

标签: php validation callback zend-framework2 error-code

我成功使用了ZF2 Callback validator,但我对它返回的代码有疑问。这里使用的配置:

'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,这是INVALID_VALUE验证类

的常量Callback的值

有没有办法通过选项更改此值?

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

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

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

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

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

   return false;
}