Я успешно использую ZF2 Callback
валидатор но у меня проблема с кодом, который он возвращает. Вот конфиг, который используют:
'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
класс проверки
Есть ли способ изменить это значение через параметры?
Я хотел бы избежать написания собственного класса для каждого элемента, который мне нужно проверить.
Я пытался, но этот код работает совершенно нормально:
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'
в вашем классе формы, внутри функции обратного вызова получите поле формы и установите для него пользовательскую ошибку:
...
'callback' => function(){
...
// validation logic returns
// one of the possible messages into $message
$this->getInputFilter()
->get('<FieldName>')
->setErrorMessage($message);
return false;
}