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;
}
我成功地使用了 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;
}