Zend Framework中使用Zend_Form的表单上的可变数量的字段

时间:2011-05-24 13:45:12

标签: zend-framework zend-form zend-form-sub-form

我有一个db表,并且在第一个和第二个中定义了链接表“site”,可以添加一个从一个到多个不同的值,这些值指向“站点”。用户可以打开包含链接数据的表单中的“站点”字段,然后在字段中显示,以便用户可以编辑值。

e.g。 “Site One”有一个相关领域。

“Site Two”有三个相关领域。

“Site Three”有两个相关领域。 等

如果我正在动摇它,我只会读取数据并创建额外的字段,但我正在使用Zend_Form构建它,它似乎想要提前知道字段的数量。我在models目录中使用了一个模型,脚本目录中有一个_form_xxx.phtml(部分?)。

我对Zend很新,并且感觉我的方式有点因此在Zend_Form中有一种方法这样做,因为我似乎不得不重写php和phtml吗?

子表单Zend_Form_SubForm是一种方法吗?

由于Zend很灵活,我假设在最坏的情况下,我可以用普通的方式编写组件,但如果可能的话,我想在框架中使用这些工具。

1 个答案:

答案 0 :(得分:0)

是什么让你认为Zend_Form应该是静态的?您可以根据需要在运行时动态创建表单内的字段。只需将动态表单元素添加到表单类的构造函数中的逻辑(扩展Zend_Form)。

class YourSplendidForm extends Zend_Form
{
    public function __construct($options = null, $yourParams)
    {
        parent::__construct($options);

        $this->setName('your_form_name');
        $this->setAction('/your/form/action/');

        // Add your fields here using addElement - or create a subform and add fields to that one and use addSubForm to add the subform


    }
}

然后只需将表单实例传递给您的视图(来自控制器)并根据需要进行处理(可以通过简单的<?php echo $this->form; ?>或自定义渲染进行处理。