Сообщение об ошибке пользовательского класса проверки Zend Framework
Проверка не проходит должным образом, но не возвращает сообщение об ошибке.
$form->addElement('text', 'phone_number', array(
'required' => true,
'validators' => array(
array('NotEmpty', true, array('messages' => 'Enter a valid Phone Number')),
array('regex', false, array('pattern' => '/\([0-9]{3}\)\s[0-9]{3}-[0-9]{4}/',
'messages' => 'Enter a valid Phone Number'
)),
'CheckPhoneNumber'),
),
));
Пользовательский класс:
class Custom_Validators_CheckPhoneNumber extends Zend_Validate_Abstract{
const IN_USE = 'inUse';
protected $_messageTemplates = array(
self::IN_USE => "'%value%' is currently in use"
);
public function isValid($value)
{
$this->_setValue($value);
$user_check = Users::getActive(preg_replace("/[^0-9]/", "", $value));
if($user_check->id){
$this->_error(self::IN_USE);
return false;
}
return true;
}
}
Только неудача не дает ошибку "IN_USE".
3 ответа
Только элемент phone_number не отображает ошибки или есть другие?
Вы выключили стандартные декораторы с disableLoadDefaultDecorators
?
Как насчет этого, предоставив пользовательский валидатор в массиве:
$form->addElement(
'text', 'phone_number', array(
'required' => true,
'validators' => array(
array(
'NotEmpty', true, array(
'messages' => 'Enter a valid Phone Number'
)
),
array(
'regex', false, array(
'pattern' => '/\([0-9]{3}\)\s[0-9]{3}-[0-9]{4}/',
'messages' => 'Enter a valid Phone Number'
)
),
array(
'CheckPhoneNumber'
)
)
)
);
Вы уверены, что он не работает в вашем пользовательском валидаторе? Попытайтесь удостовериться, что это действительно терпит неудачу в пользовательском валидаторе.
Если нет, проверьте, правильно ли настроен путь префикса для элементов формы
$form->addElementPrefixPath(
'Custom_Validators',
'Custom/Validators',
'validate'
);
Код для пользовательского валидатора, кажется, в порядке.
$form->addElement('text', 'phone_number', array(
'required' => true,
'validators' => array(
array('NotEmpty', true, array('messages' => 'Enter a valid Phone Number')),
array('regex', false, array('pattern' => '/\([0-9]{3}\)\s[0-9]{3}-[0-9]{4}/',
'messages'=>array(Zend_Validate_Regex::NOT_MATCH=>'%value% is not a valid phone')
)),
'CheckPhoneNumber'),
),
));