php - Zend_Validate_Between 奇怪的错误信息

标签 php validation zend-framework

我正在试验 Zend_Validate_Between 类。

我是这样设置的:

$scoreBetweenValidator = new Zend_Validate_Between(-3, 3, true);

因此验证器应该只接受 -3 到 3 之间的值,包括端值。

在无效值上我得到了一个'%value%' was not found in the haystack 错误消息,我认为它属于Zend_Validate_InArray 类(Zend_Validate_InArray::NOT_IN_ARRAY)。

我的问题是我希望通过 setMessages 方法使用自定义错误消息,但我不知道如何为这个看似陌生的消息键设置它。

我试过这个:

$scoreBetweenValidator->setMessages(array(
        Zend_Validate_Between::NOT_BETWEEN_STRICT => 'my custom msg',
        Zend_Validate_Between::NOT_BETWEEN => 'my other custom msg',
            //'notInArray' => "doesn't work"
            //Zend_Validate_InArray::NOT_IN_ARRAY => "also doesn't work"
    ));

但我得到了一个No message template exists for key 'notInArray'异常。

在 Zend Framework 中设置自定义验证消息的首选解决方案是什么?

作为对杰森的回复:

Zend_Form_Element_Select 位于附有 addElements 方法的 Zend_Form 类中。

表单没有任何其他元素,只有这个,也没有任何其他验证器,只有 Between。

默认情况下,select 的选项都是有效的,但是当我调整选项值(使用 Firebug)并设置一个无效值(作为 self 攻击尝试)时,我收到 notInArray 异常。

最佳答案

Zend_Form_Element_Select 自动向其自身添加一个 InArray 验证器。

要为其设置错误消息,这应该可以解决问题:

$element->getValidator('InArray')->setMessage('Your inArray error message here', Zend_Validate_InArray::NOT_IN_ARRAY);

如果您根本不需要 InArray 验证器,您可以通过在元素上调用 setRegisterInArrayValidator(false) 或将 false 传递给 registerInArrayValidator 来禁用此行为> 元素创建的配置键。

关于php - Zend_Validate_Between 奇怪的错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/991001/

相关文章:

php 输入流大小限制

php - Zend 分页器变量

php - 如果在 MySQL INSERT 期间存在重复行,如何返回现有行的 ID?

validation - 服务层中的 FluentValidation?

c# - 如何跨同一实体的实例实现实体验证

zend-framework - Zend rest Controller 路由到特定 Controller

zend-framework - 如何在 Zend Framework 中使用命名空间?

php - 我可以在 PHP 中混合使用 MySQL API 吗?

java - 他们有什么方法可以提高 JSP 类型的安全性吗?

php - 为 Zend_Form_Element_Select 设置默认选择选项