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\', array(
           \'required\'    => true,
           \'label\'       => \'Регистрируясь, вы должны согласиться с правилами:\',            
           \'validators\'  => array($validatorNotEmpty),
       ));
无论如何,我从翻译器文件中获取消息,而不是自定义的书面消息文本。     
已邀请:
        尝试
   $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\' ) ) ),
    )
));
    

要回复问题请先登录注册