簡體   English   中英

Zend Framework,Zend_Form_Element如何設置自定義名稱?

[英]Zend Framework, Zend_Form_Element how to set custom name?

我有表單,其中某些字段看起來像行,因此可以使用JS添加/刪除它們。 例如:

ID = 1的字段(現有行)

<input id="id[1]" type="text" name="id[1]" value="1" />
<input id="name[1]" type="text" name="name[1]" value="100" />

ID = 2的字段(現有行)

<input id="name[2]" type="text" name="name[2]" value="200" />
<input id="name[2]" type="text" name="name[2]" value="200" />

默認情況下創建的新行(允許在現有行中再添加一行)

<input id="id[n0]" type="text" name="id[n0]" value="" />
<input id="name[n0]" type="text" name="name[n0]" value="" />

JS創建的新行

<input id="id[n1]" type="text" name="id[n1]" value="" />
<input id="name[n1]" type="text" name="name[n1]" value="" />

因此,我們將繼續進行表格處理,我們將知道要更新哪些行以及要添加什么行(如果索引以“ n”開頭-新建,如果索引為number-存在的元素)。

我嘗試了子窗體...但是我是否必須為每個字段創建子窗體? 如果我使用以下代碼:

$subForm = new Zend_Form_SubForm();
$subForm->addElement('Text', 'n0');
$this->addSubForm($subForm, 'pid');       
$subForm = new Zend_Form_SubForm();
$subForm->addElement('Text', 'n0');
$this->addSubForm($subForm, 'name');

最好的方法是什么?

1)使用子表單?

2)擴展Zend / Form / Decorator / ViewHelper.php以使用諸如name[nX]類的name[nX]

3)其他解決方案?

謝謝。

另一種方法是創建一個包含所有字段的單個子表單,然后將這些子表單的數組添加到您的主表單中。 這是我使用的代碼:

        foreach ($value as $id => $row) {

                $subForm = clone $origSubForm;

                $name = 'multi[' . $id . ']';
                $subForm->setElementsBelongTo($name);
                $subForm->setName($name);
                $subForm->populate($row);

                $subForms[$id] = $subForm;
        }

將這些形式放入數組元素(在此示例中為multi )。 而不是包含單個$id[]值的數組,而是得到一個包含[0 => ['id' => .., ], 'n0' => ['id' => ...]]數組

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM