【问题标题】:zend validation messagesZend 验证消息
【发布时间】:2012-06-04 13:02:26
【问题描述】:

考虑表单的以下部分

    $name = new Zend_Form_Element_Text('name');
    $name->setLabel('name: ')
                             ->setRequired(true)
                             ->addValidator($empty)
                             ->addValidator($alpha)
             ->setDecorators($newdecorators);
    $this->addElement($name);

我将 $empty 和 $alpha 定义为:

        $empty = new Zend_Validate_NotEmpty();
        $empty->setMessage('some text',  Zend_Validate_NotEmpty::IS_EMPTY);

        $alpha = new Zend_Validate_Alpha();
        $alpha->setMessage('some text',Zend_Validate_Alpha::NOT_ALPHA);

现在我的问题:

使用此代码,当输入为空时,我会收到双重验证消息。首先是自定义消息,然后:'' 是一个空字符串 当我删除 setRequired 时,空验证器不会运行。为什么是这样?我不想使用 setRequired,因为如果我为 setRequired 添加 errorMessage,$alpha 错误消息将被覆盖。

谢谢, J

【问题讨论】:

    标签: zend-form


    【解决方案1】:

    这是因为默认行为是检查分配给元素的所有验证器,即使之前的验证之一失败。

    幸运的是,防止这种情况很容易:在addValidator 方法中,您可以传递第二个参数$breakChainOnFailure,如果设置为true,则在失败时停止进一步验证。

    所以在你给出的例子中,你需要做的就是将第二个参数设置为true:

    $name = new Zend_Form_Element_Text('name');
    $name->setLabel('name: ')
                             ->setRequired(true)
                             ->addValidator($empty, true)
                             ->addValidator($alpha, true)
             ->setDecorators($newdecorators);
    $this->addElement($name);
    

    如果输入空字符串,只会显示一条错误消息。

    有关更多信息,请参阅 Validator Chains 上的 Zend 框架文档。

    【讨论】:

    • 非常感谢moeso先生!
    • 不客气,贾斯珀。如果我的回答有帮助并且确实解决了您的问题,如果您将其标记为已接受会很好:)
    • 如果不是2麻烦,你能不能看看我的另一个问题?
    • 我调查了一下。很抱歉,由于我从未使用过教义,因此我不知道您的问题的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多