如果每个的数量未知,如何处理Zend SubForms

时间:2012-02-15 15:13:50

标签: zend-framework zend-form

我有一个'客户'表单,其中有一个名为'contacts'的部分。首先,此联系人部分将包含以下元素..

<input type="text" name="contacts[0][fname]" />
<input type="text" name="contacts[0][sname]" />

但是用户可能想要添加另一个联系人,该联系人将使用javascript复制元素以生成以下内容:

<input type="text" name="contacts[0][fname]" />
<input type="text" name="contacts[0][sname]" />
<br />
<input type="text" name="contacts[1][fname]" />
<input type="text" name="contacts[1][sname]" />

我知道如何制作第一组元素,但是如果表单被提交并且有错误,我如何确保呈现正确数量的“联系人”元素?

1 个答案:

答案 0 :(得分:0)

我从来没有用Zend_Form做过这个,但我用Symfony 1.4的sfForm做了这个,它有一个类似的API和操作理论。基于此基本过程是:

  1. 在父窗体构造函数中初始化一些默认数量的子窗体。您需要将实际创建和嵌入n子表单的逻辑分离出来,并将其嵌入到单独的方法中。我将此称为方法emebedContacts($count = 1)

  2. 覆盖父窗体上的isValidsetDefaults方法,以便它们检测传递给它们的$data参数中的子窗体数,然后调用{{1}在致电embedContactsparent::isValid()

  3. 之前

    希望有所帮助。