我的ZF2使用我到处看到的简单结构,在模型中设置inputFilters并在验证期间应用于表单。但我真的在这里撞墙了。如何处理一个表单的验证,该表单包含一些需要针对一个模型进行验证的字段以及一些需要针对另一个模型进行验证的字段?
我的场景:我使用单个表单在我的数据库的2个表中插入2个条目(添加用户,并添加链接到该用户的捐赠)。有些字段会放在一个表中,有些字段放在第二个表中。
就像我说的,我的输入过滤器存储在模型级别。
如果我的整个场景仅涉及一个模型/表格,例如存储一个捐赠而没有其他内容,我会按照以下步骤进行:
$donation = new Donation();
$form->setInputFilter($donation->getInputFilter());
$form->setData($request->getPost());
if ($form->isValid()) {
$donation->exchangeArray($form->getData());
$this->getDonationTable()->saveDonation($donation);
我可以做到以上几点。
但我正在尝试分析和验证我从2个模型中收集的两组inputFilter的表单数据。一个用于捐赠模型的数据,另一个用于将转发给用户的数据。因此我接受这样的事情:
$donation = new Donation();
$user = new User();
$form->setInputFilter($donation->getInputFilter());
然后我会添加类似:(显然不存在)
$ form-> addInputFilter($ user-> getInputFilter());
所以我可以继续......
$form->setData($request->getPost());
if ($form->isValid()) {
// add donation
// add user
我很惊讶我在互联网上没有找到任何关于此的信息,我使用模型和输入过滤器的方式是不正确的?如何处理一个表单的验证,该表单包含一些需要针对一个模型进行验证的字段以及一些需要针对另一个模型进行验证的字段?
答案 0 :(得分:2)
Fieldsets (表单集)。官方文件在这里:
https://zf2.readthedocs.org/en/latest/modules/zend.form.collections.html