1

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

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

那么有什么想法吗?

4

0 回答 0