2011-12-10 106 views
1

我正在使用Zend窗体的模型。我有一个名为$ product_item的子表单。我想将它的多个实例添加到名为$ items的另一个子表单中。我会怎么做呢?我没有找到Zend参考指南特别有用。子窗体内的子窗体

回答

3

你可以只添加子形式子形式: -

$form = new Application_Form_Test(); 
$subForm1 = new Application_Form_TestSubForm(); 
$subForm2 = new Application_Form_TestSubForm(); 
$subForm1->addSubForm($subForm2, 'sub2'); 
$form->addSubForm($subForm1, 'sub1'); 
$this->view->form = $form; 

在提交窗体值将在$_POST阵列阵列可用。例如,$value=$_POST['sub1']['sub2']['name']

http://framework.zend.com/manual/en/zend.form.forms.html#zend.form.forms.subforms

要打印或子访问形式元素,你有几种选择: -

如果$subForm1有这样声明的元素: -

$email = new Zend_Form_Element_Text('email'); 

然后email场可以呈现在这样的看法: -

<?php echo $this->element->sub1->email; ?> 

请记住,这些元素不会被您用来声明它们的变量名称的名称引用。

另外,请记住$this->element引用的是Zend_Form的实例,因此您可以使用所有这些方法。这意味着你可以这样做: -

<?php 
    $form = $this->element; 
    $formElements = $form->getElements(); 
?> 
+0

谢谢。跟进,如果我可以......我知道你可以在视图中打印一个正常的表单元素,如下所示:' element-> email;?>'。如果$ email是$ subForm1的元素,那么您将如何打印它? – liz

+0

我编辑了我的答案。 – vascowhite

+0

更新:找出它:'$ this-> element-> sub1-> sub2-> email;' – liz