我有一个zend表单,我需要每个元素被显示组包装。然后我需要将一组元素包装在另一个显示组中。由于zend表单不支持嵌套显示组,我改用子表单。Zend SubForm:如何禁用子窗体内部元素名称的更改?
所以,我现在的结构是:
Form
--- SubForm (1)
--- --- DisplayGroup (1-1)
--- --- --- Element (1)
--- --- DisplayGroup (1-2)
--- --- --- Element (2)
--- SubForm (2)
--- --- DisplayGroup (2-1)
--- --- --- Element (3)
--- --- DisplayGroup (2-2)
--- --- --- Element (4)
等
由此看来,然而,来自每个子窗体被设置为父母到属于它的每个元素的问题。这改变了元素的名称f.e. name="username"
变成name="subformname[username]"
。
由于我使用的子表单作为显示组的替代品,我不需要它的额外功能。
如何禁用此名称更改?我正在使用自定义函数来“批量处理”每个元素(平凡的东西 - 删除装饰器,设置标签等),所以我能够强制setAttrib('name', $element -> getName())
,但事实证明,这只适用于常规表单元素。它不适用于像datepickers,colorpickers等ZendX表单元素。
为什么你需要用显示组来包装每个元素? – 2012-08-14 14:19:36
每个元素都应该从twitter引导CSS框架继承span4或span6,以便出现在列中。更进一步,它应该在Zend_Form中,而不是在视图 - 客户端的要求。 – user1388771 2012-08-14 14:33:30