如何解决Zend Framework Validator消息错误
| 我的表格连接了验证程序错误翻译器 class My_Lib_Forms_Form extends Zend_Form {
public function init()
{
parent::init();
$translator = new Zend_Translate(\'array\',APPLICATION_PATH . \'/languages/errors.PHP\');
// Задаем объект переводчика для формы
$this->setTranslator($translator);
}
}
这是验证器错误翻译器代码:
<?PHP
return $errors = array(
Zend_Validate_Alnum::STRING_EMPTY => \"Поле не может быть пустым\",Zend_Validate_Date::INVALID_DATE => \'Значение не соответствует формату год-месяц-день\',Zend_Validate_Date::INVALID => \'Неверная дата\',Zend_Validate_Date::FALSEFORMAT => \'Значение не соответствует указанному формату\',Zend_Validate_EmailAddress::INVALID_FORMAT => \"asdasd\",Zend_Validate_EmailAddress::INVALID_FORMAT => \"Не верный формат адреса электронной почты. Введите почту в формате local-part@hostname\",Zend_Validate_EmailAddress::INVALID_HOSTNAME => \"\'%hostname%\' не верный домен для адреса электронной почты \'%value%\'\",Zend_Validate_EmailAddress::INVALID_MX_RECORD => \"\'%hostname%\' не имеет MX-записи об адресе электронной почты \'%value%\'\",Zend_Validate_EmailAddress::DOT_ATOM => \"\'%localPart%\' не соответствует формату dot-atom\",Zend_Validate_EmailAddress::QUOTED_STRING => \"\'%localPart%\' не соответствует формату quoted-string\",Zend_Validate_EmailAddress::INVALID_LOCAL_PART => \"\'%localPart%\' не верное имя для адреса электронной почты \'%value%\'\",Zend_Validate_Int::NOT_INT => \'Значение не является целочисленным значением\',Zend_Validate_NotEmpty::IS_EMPTY => \'Поле не может быть пустым\',Zend_Validate_StringLength::TOO_SHORT => \'Длина введённого значения меньше чем %min% символов\',Zend_Validate_StringLength::TOO_LONG => \'Длина введённого значения больше чем %max% символов\',My_Lib_Validate_EqualInputs::NOT_EQUAL => \'Пароли не совпадают\',My_Lib_Validate_Password::INVALID => \'Не верный формат пароля\',My_Lib_Validate_Password::INVALID_LENGTH => \'Длина пароля должна быть от 7 до 30ти символов\',Zend_Captcha_Word::BAD_CAPTCHA => \'Вы указали не верные символы\',Zend_Captcha_Word::MISSING_VALUE => \'Поле не может быть пустым\',\'userAgreement\' => \'Регистрируясь вы должны согласится с правилами\',);
如何更改自定义元素的验证错误消息?
我正在尝试通过以下方式进行操作:
$validatorNotEmpty = new Zend_Validate_NotEmpty();
$validatorNotEmpty->setMessages(array(
Zend_Validate_NotEmpty::IS_EMPTY => \'agreeRules\'));
$userAgreement = new Zend_Form_Element_CheckBox(\'userAgreement\',array(
\'required\' => true,\'label\' => \'Регистрируясь,вы должны согласиться с правилами:\',\'validators\' => array($validatorNotEmpty),));
而且也是这样:
$validatorNotEmpty = new Zend_Validate_NotEmpty();
$validatorNotEmpty->setMessage( \'Регистрируясь вы должны согласится с правилами\',Zend_Validate_NotEmpty::IS_EMPTY);
$userAgreement = new Zend_Form_Element_CheckBox(\'userAgreement\',));
无论如何,我从翻译器文件中获取消息,而不是自定义的书面消息文本。
解决方法
尝试
$validatorNotEmpty->setMessages(array(\'agreeRules\'));
它会覆盖所有消息,但是在IS_EMPTY情况下,它实际上是一条消息
您可以尝试其他方法,按价值转换
删除Zend_Validate_NotEmpty::IS_EMPTY => \'Поле не может быть пустым\',
$errors=array(
//values
\'Value is required and cannot be empty\' = > \'My translate\',\'agreeRules\' => \'My rules\'
);
然后
$validatorNotEmpty->setMessages(array(
Zend_Validate_NotEmpty::IS_EMPTY => \'agreeRules\'));
现在您的翻译得到了文字并进行了翻译,
否则,翻译人员使用\'notEmpty \'(Zend_Validate_NotEmpty::IS_EMPTY
是一个字符串)作为翻译键,而忽略文本'agreeRules \'
, 您可以在添加表单元素后编写此代码
$form->formElementName->setDisableTranslator(true);
它将为您的元素禁用翻译
, 请尝试以下方法添加元素。
$this->addElement(
\'checkbox\',\'userAgreement\',array(
\'label\' => \'Регистрируясь,вы должны согласиться с правилами:\',\'required\' => true,\'validators\' => array(
array(\'NotEmpty\',true,array( \'messages\' => array( Zend_Validate_NotEmpty::IS_EMPTY => \'agreeRules\' ) ) ),)
));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。