2013-03-18 73 views
1

我需要使用zend框架创建一个多维数组表单。当我发布表单时,我应该能够以发布的形式获得以下结果。Zend Framework多维表单阵列

Array 
(
    [Address] => Array 
     (
      [customer] => Array 
       (
        [name] => Customer Name 
       ) 

      [guest] => Array 
       (
        [name] => Guest Name 
       ) 

     ) 

) 

由于某种原因,我无法获得上述结果。到目前为止,我得到的结果是这样的。

Array 
(
    [customer_name] => Customer Name 
    [guest_name] => Guest Name 
) 

所以我的问题是Zend_Form支持多维形式的数组?如果是的话如何?

在此先感谢...

+0

您可以对当前数组执行操作以获得期望值。或者看看[zend subform](http://framework.zend.com/manual/1.12/en/zend.form.forms.html#zend.form.forms.subforms)。 – Rikesh 2013-03-18 09:52:22

回答

5

这ISSU是不是ZF,而是<form>系统。 要检索多维表单数组,您必须提供良好的名称属性。

在ZF,操纵名字,你可以使用:

$form->myelement->setAttrib('name', 'myname');$form->myelement->setName('myname');

要做到你所期望的,你必须使用的命名格式如:

$form->element1->setName('[address][customer][name]'); 
$form->element2->setName('[address][guest][name]'); 

通过这个命名,您可以在多维数组中检索POST数据。

使用子窗体,你只能操纵第一维。所以元件将具有象一个命名形式:

$subform1->setName('customer'); 
$subform1->element1->setName('[address][name]'); 
[...]//do it for each element 

$subform2->setName('guest'); 
$subform2->element1->setName('[address][name]'); 
[...]//do it for each element 
+0

这是一个很好的工作,但有没有使用Zend子表单的方法?我试过zend子表单,但只能进入一个数组级别... – 2013-03-18 09:56:29

0

过滤器Zend_Form_Element的的的setName()方法,并且不允许[和]。

setBelongsTo()方法就是为此而设计的。但我不确定setName()和setBelongsTo()对可以处理多个维度。