我有一个名为 TestController 的控制器,它扩展了一些 Zend_Controller_Action。现在我想使用在 TestForms(一个 Zend_Form)中创建一个 TestController 的实例。我想动态填充 Zend_Form_Element_Select。请建议我如何做到这一点。提前谢谢。
问问题
765 次
2 回答
1
您在哪里实例化表单 - 它在控制器中吗?与其让表单在控制器上调用一个动作来动态获取值,不如在实例化后查看在表单上设置值。
一种快速而肮脏的方法是获取控制器中的值并通过以下方式将其分配给元素:
$values = $db->query('query');
$element = $form->getElement('dynamicSelect');
$element->setValue($values);
当然,对控制器中的表进行数据库查询并不是最佳实践……根据 philistyne 的建议,我使用表单构建器类从我的模型中动态构建表单。我为每个模型都有映射器,并将映射器传递给表单构建器类,以便它可以动态填充我的选择元素。
于 2011-03-10T06:28:32.737 回答
0
可以尝试几件事(不建议将控制器传递到表单中或从表单中实例化):
- 使用模型访问您想要放入 Zend_Form_Element_Select 的动态值。
- 如果表单很复杂,请创建一个表单构建器类来处理并分离出表单构造的繁重工作。
- 如果您觉得需要对表单元素的构造/行为/外观进行非常精细的控制,但希望能够在其他地方重用该元素,则通过从 Zend_Form_Element_(Radio、Select 等) 扩展来创建自定义表单元素。
于 2011-03-08T14:27:36.867 回答