Zend Framework有多个表单元素名称

时间:2013-03-20 08:55:06

标签: zend-framework zend-form

我的应用程序中有多个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; ?>

然后一切都好,我得到不同的字段名称。

所有想法?

0 个答案:

没有答案