我的应用程序中有多个Zend Framework(v1.12)表单。
主要形式:
<?php
class Application_Form_Main extends Zend_Form
{
public function init()
{
$this->setMethod('post')->setAction('some/url');
}
}
?>
我的子表单:
<?php
class Application_Form_User extends Zend_Form_SubForm
{
public function init()
{
//first name element
$this->addElement('text',
'first_name',
array(
'label' => 'Name',
'required' => true,
'filters' => array('StringTrim')
)
);
//last name element
$this->addElement('text',
'last_name',
array(
'label' => 'Surname',
'required' => true,
'filters' => array('StringTrim')
)
);
$this->setElementDecorators(array(
'ViewHelper',
'Errors'
));
}
}
?>
在我的自定义控制器中(例如UsersController.php)我使用多个用户子表单渲染主窗体:
<?php
$mainForm = new Application_Form_Main();
for($i=0; $i<2; $i++){
$userForm = new Application_Form_User();
$mainForm->addSubForm($userForm, 'user_'.($i+1));
}
//passing main form to the template
$this->view->mainForm = $mainForm;
?>
所以我得到了包含2个用户first_name和last_name字段的表单。
在我的模板中我以这种方式渲染:
<form action="<?php echo $this->mainForm->getAction(); ?>"
enctype="<?php echo $this->form->getEnctype(); ?>"
method="<?php echo $this->form->getMethod(); ?>"
">
<?php echo $this->mainForm->getSubForm('user_1')->first_name; ?>
<?php echo $this->mainForm->getSubForm('user_1')->last_name; ?>
<?php echo $this->echo $this->mainForm->getSubForm('user_2')->first_name; ?>
<?php echo $this->echo $this->mainForm->getSubForm('user_2')->last_name; ?>
</form>
问题是first_name和last_name文本字段名称在两种形式中都是相同的。如何让它具有唯一的名称?如果我输出表格:
<?php echo $this->mainForm; ?>
然后一切都好,我得到不同的字段名称。
所有想法?