【问题标题】:Zend specific custom error message for multiple errorsZend 针对多个错误的特定自定义错误消息
【发布时间】:2013-09-04 15:33:09
【问题描述】:

我想做什么:

当某些验证失败时,将自定义错误消息添加到我的 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'));

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

【问题讨论】:

    标签: php zend-framework zend-form-element zend-validate


    【解决方案1】:

    您需要将自定义消息添加到验证器,而不是元素。

    类似:

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

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

    【讨论】:

    • 非常感谢,这确实是我的错误。我现在在验证器上使用 setMessages(),它就像一个魅力
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 2015-09-21
    • 2011-04-27
    相关资源
    最近更新 更多