我的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());
然后我会添加类似的东西:(显然不存在)
$形式 – > addInputFilter($用户> getInputFilter());
所以我可以继续……
$form->setData($request->getPost());
if ($form->isValid()) {
// add donation
// add user
我很惊讶我没有在互联网上找到任何关于这个,我使用模型和输入过滤器的方式不正确?如何处理一个表单的验证,该表单包含一些需要针对一个模型进行验证的字段以及一些需要针对另一个模型进行验证的字段?
最佳答案 您正在寻找Fieldsets(Form Collections).官方文件在这里:
https://zf2.readthedocs.org/en/latest/modules/zend.form.collections.html