0

我想做的事:

当某些验证失败时,将自定义 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'));

我为此浪费了很多时间,并且知道这一定是一个非常愚蠢的错误:(

4

1 回答 1

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);

在创建元素、将元素添加到表单等过程中可以使用聚合的简短表单。但结果通常是,您会覆盖验证器上的验证器消息,而不是元素上的验证器消息。

于 2013-09-04T18:38:20.283 回答