在表单和持久性之间共享注释验证规则

时间:2012-10-26 19:51:36

标签: php doctrine zend-framework2

一个“简单”问题:http://mwop.net/blog/2012-07-02-zf2-beta5-forms.html

是否可以在不使用zend表单的情况下使用zf2 zend表单注释验证规则,因此我可以在模型验证器之间共享验证规则(例如,在持久化之前用于检查模型是否正确)和zend表单验证?

如果我的“名称”不应为空且介于5到20个字符之间,则表格与模型的规则相同。

我希望我能清楚地指出

罗马

1 个答案:

答案 0 :(得分:1)

好吧,因为模型获得的所有数据都来自用户输入或数据库,所以您也不需要自己测试模型。数据库中的数据应该是正确的!

IE:信任您自己的数据但不信任用户?

但是如果你仍然想这样做,我想你可以使用AnnotationBuilder构建表单,然后从表单中获取InputFilters(我确定有一个方法,也许是基于每个元素)然后使用你的内部模型 - 但正如我的第一段所暗示的那样,我认为这是一个非常无用的观点:)

对于多个可用的输入过滤器,最好的方法是在每个模型的基础上编写扩展Zend\InputFilter\InputFilter的自己的类。在构建表单时,您可以通过$form->setInputFilter($myModelInputFilterClass)将该类作为过滤器定义附加,您也可以在模型中调用该类以通过这些过滤器运行数据。我没有手动完成这个,但它应该工作。

如果您遇到必需的陈述,我猜可能会发生唯一的陷阱。检查每个元素,我不知道这是否也有效。由于InputFilter检查所有给定的过滤器。虽然如果您导入一个完整的CSV工作表,或者您有一个populateFromCsv()函数,或者其他东西,然后我会猜测所有数据。