要验证表单,请在模型对象上定义输入过滤器,如下所示: https://github.com/akrabat/zf2-tutorial/blob/master/module/Album/src/Album/Model/Album.php#L38
但是我看到表单元素也存在输入过滤器,例如: https://github.com/zendframework/zf2/blob/master/library/Zend/Form/Element/Email.php#L126
为什么为对象模型和表单元素定义了输入过滤器,首先执行哪一个?如果我必须自定义特定字段的错误消息,我是否必须在两个地方都这样做?
答案 0 :(得分:0)
在大多数情况下,您应该在模型中定义输入过滤器,甚至在Form
类中的某个位置定义输入过滤器。来自表单元素的这些输入过滤器是电子邮件的默认输入过滤器,因此为了方便您不必使用输入文本字段并定义过滤和验证这些电子邮件的规则,只需使用电子邮件元素。
这是区分简单文本字段和html5电子邮件字段的示例。因此,电子邮件字段会被StringTrim
过滤器过滤,然后由regex进行验证。在评论中,您可以看到关于验证正则表达式与浏览器电子邮件输入字段验证相同的注释。