如何创建实例到zend控制器

时间:2011-03-08 12:07:50

标签: zend-framework zend-form zend-controller

我有一个名为TestController的控制器,它扩展了一些Zend_Controller_Action。现在我想在TestForms中创建一个TestController实例(一个Zend_Form)。我想动态填充Zend_Form_Element_Select。 请建议我如何做到这一点。提前完成。

2 个答案:

答案 0 :(得分:1)

您在何处实例化表单 - 是否在控制器中?不应让表单调用控制器上的动作来动态获取值,而应该在实例化后在表单上设置值。

快速而肮脏的方法是获取控制器中的值并通过以下方式将其分配给元素:

$values = $db->query('query');
$element = $form->getElement('dynamicSelect');
$element->setValue($values);

当然,对控制器中的表进行数据库查询并不是最佳实践...根据philistyne的建议,我使用表单构建器类从我的模型动态构建表单。我有每个模型的映射器,我将映射器传递给表单构建器类,以便它可以动态填充我的选择元素。

答案 1 :(得分:0)

不建议尝试(将控制器传递到表单或从一个表单中实例化):

  1. 使用模型访问要放入Zend_Form_Element_Select的动态值。
  2. 如果表单很复杂,请创建一个表单构建器类来处理和分离表单构造的繁重工作。
  3. 如果您觉得需要对表单元素的构造/行为/外观进行非常精细的控制,但希望能够在其他地方重用该元素,则可以通过从Zend_Form_Element_(Radio,Select等等)扩展来创建自定义表单元素。 LI>