【发布时间】:2016-06-15 17:28:14
【问题描述】:
我有一个模型,其中包含 10 个属性,我为每个属性指定输入过滤规则。我想创建一个 \Zend\Form\Form 对象,它应该只用于这 10 个字段的子集(比如其中的 5 个)。我遇到的问题是,当我执行\Zend\Form\Form::bind() 时,所有 10 个字段的输入过滤器规则都被拉入,并且由于表单没有 5 个字段,因此验证出现错误(尽管由于表单没有出现零错误消息没有它们)。
我知道有几个选项可以解决这个问题,但我想为模型中的每个字段维护过滤器和验证规则,因此无论我使用的表单是什么,都将使用相同的过滤和验证规则自动被采纳。我对 ZF2 还是比较陌生,所以我真的在问除了我将在下面列出的选项之外是否还有其他方法可以做到这一点。
- 编写我自己的
\Zend\Form\FormInterface实现,以防止输入过滤器的“复制”。 - 拥有一个仅包含此特定表单字段的模型。
- 重新思考我的数据库设计,以便在我的所有模型和表单之间建立直接的字段到字段关系。
非常感谢!
注意:我尝试使用表单工厂中的模型对象中的\Zend\Input\InputFilter::get('FieldNameHere') 仅拉入我需要的InputInterface,但\Zend\Form\Form::bind() 只是覆盖它.
【问题讨论】:
-
你应该看看validation groups。
-
@AlexP 这正是我所需要的,谢谢。如果您发布答案,我会接受。
标签: php forms validation zend-framework2 zend-form