问题描述
|
我有一个数据库表和一个链接表\“ site \”在第一个中定义,在第二个中,可以添加从一个到多个变化的多个值,这些值指向\“ site \”。用户可以使用带有链接数据的表单打开\“ site \”字段,然后在字段中显示,以便用户可以编辑值。
例如“网站一”具有一个相关字段。
“站点二”具有三个相关字段。
“站点三”具有两个相关的字段。
等等。
如果我要手动启动它,我只会读取数据并创建额外的字段,但是我正在使用Zend_Form构建它,它似乎想提前知道字段的数量。我在models目录中使用了一个模型,在scripts目录中使用了_form_xxx.phtml(部分?)。
我对Zend并不熟悉,所以有点感觉,所以Zend_Form是否有办法做到这一点,否则我似乎不得不重写PHP和phtml了?
子表单Zend_Form_SubForm是可行的吗?
由于Zend是灵活的,我认为在最坏的情况下我可以用普通的香草方式编写组件,但如果可能的话,我想在框架中使用这些工具。
解决方法
是什么让您认为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
}
}
然后只需将表单实例(从控制器)传递到视图并根据需要进行处理(通过简单的“ 1”或您认为合适的自定义渲染)即可。