元素标签作为变量在错误消息中进行验证

时间:2011-09-07 11:25:36

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

是否可以在错误消息中使用一个引用表单元素标签的变量?可以映射自定义变量,如%hostname%(在电子邮件验证程序中),%value%也可用,但我也希望有表单标签。

我在ZF代码库中找不到它,但用例例如Zend_Validate_NotEmpty可以返回如下消息:

"The field %label% is required and can't be empty"

而不是:

 "Value is required and can't be empty"

2 个答案:

答案 0 :(得分:1)

我认为没有子类化验证器是不可能的。 Zend_Validate类不打算仅与Zend_Form_Element一起使用。消息中包含%label%会在两个组件之间引入耦合。

可能的解决方案是通过扩展Zend_Validate_NotEmpty(或您正在使用的任何验证器)来创建自定义验证器,并将标签传递给构造函数。这样,每次实例化时都可以编写相应的消息。

编辑:

如果您按照上述方法操作,您甚至可以定义自己的%label%“魔术变量”并将其附加到班级成员。请参阅Zend Framework文档中示例#2中的$_messageVariables成员:Writing validators

希望有帮助...

答案 1 :(得分:0)

我终于和装饰师一起去了。 dinopmi的解决方案是可能的,但您需要始终注入标签。我的表单元素的错误装饰器现在将%label%替换为真实标签。