2013-03-18 61 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()對可以處理多個維度。