我想做什么:
当某些验证失败时,将自定义ErrorMessages添加到Zend_Form_Element_Text中。 但这是我的问题:无论我在那里尝试过哪里只显示所有自定义消息或者 默认。即使是第一个StringLength验证也只显示两种情况。
我做的简短示例:
$usernameElement = new Zend_Form_Element_Text('username', array('label' => 'Username'));
$usernameElement->setRequired(true);
$usernameElement->addValidator(
new Zend_Validate_StringLength(array('min' => 3, 'max' => 32),true)
);
$usernameElement->addErrorMessages(array(
Zend_Validate_StringLength::TOO_SHORT => 'Username is too short',
Zend_Validate_StringLength::TOO_LONG => 'Username is too long'));
我浪费了很多时间在这上面,并且知道它一定是一个非常愚蠢的错误:(
答案 0 :(得分:2)
您需要将自定义消息添加到验证器,而不是元素。
类似的东西:
$validator = new Zend_Validate_StringLength(array(
'min' => 3,
'max' => 32,
'messages' => array(
Zend_Validate_StringLength::TOO_SHORT => 'Username is too short',
Zend_Validate_StringLength::TOO_LONG => 'Username is too long',
),
));
$element->addValidator($validator, true);
可以在元素创建期间使用聚合的简短表单,在表单中添加元素等等。但结果是,通常,您覆盖验证器上的验证器消息,而不是元素上的验证器消息。