我的应用程序中有多个 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; ?>
然后一切正常,我得到不同的字段名称。
那么有什么想法吗?