2012-12-04 74 views
1

是否有辦法在Zend Framework2中使用zend子表單。當我在互聯網上進行搜索時,我找到了很多示例,展示瞭如何使用Zend子表單,但是使用Zend Framework1。如何在Zend Framework2中使用子表單

如果有人有一個鏈接/例子,可以通過一個基本的例子,將是很好的。

任何信息表示讚賞。

回答

5

由於Zend \ Form是樹形結構,您可以使用表單名稱將另一個表單添加到表單中。這些是這樣的:

$form = new \Zend\Form\Form(); 
$form->add(array(
    'name' => 'username', 
    'type' => 'Zend\Form\Element\Text', 
)); 

$subForm = new \Zend\Form\Form(); 
$subForm->setName('subform'); 
$subForm->add(array(
    'name' => 'email', 
    'type' => 'Zend\Form\Element\Text', 
)); 

$form->add($subForm); 

$form->prepare(); 

$helper = new Zend\Form\View\Helper\FormText(); 
echo $helper($form->get('username')); //<input type="text" name="username" value=""> 
echo $helper($form->get('subform')->get('email')); //<input type="text" name="subform[email]" value=""> 

注意到,「子窗體」輸入名稱將作爲前綴自動被添加表單名稱。

0

我一直在使用它幾個小時,並且在我的理解中,zf1子表單函數是通過使用嵌套字段集在zf2中解決的。

\Zend\Form\Fieldset也是\Zend\Form\Form的父類。

以前的答案似乎是正確的我,但如果你喜歡保持獨立的類形式和窗體,請閱讀本:

http://zf2.readthedocs.org/en/latest/modules/zend.form.collections.html

忽略實體和水化的東西,如果你現在不感興趣,並看看CreateProduct類,它是一種使用FieldSet ProductFieldset作爲子窗體的窗體。在渲染時,子窗體字段將被命名爲喜歡

<input ...name="product[el1]" ... > 

(其中product是子窗體的名稱)。 和$形式 - >的getData()將返回

array('product'=>array(...)) 

注意:您需要調用$form->prepare();在渲染之前,或者嵌套將不會被處理。

相關問題