我有一个上传表单,显示在叠加层/灯箱/顶层。它仅适用于多个控制器中的多个操作。
创建这个表单需要大约 6 行代码,并且需要访问 REQUEST 对象以从中获取参数。
我应该把这段代码放在哪里,这样我就可以轻松地在我需要的操作中创建我的表单。
我有一个上传表单,显示在叠加层/灯箱/顶层。它仅适用于多个控制器中的多个操作。
创建这个表单需要大约 6 行代码,并且需要访问 REQUEST 对象以从中获取参数。
我应该把这段代码放在哪里,这样我就可以轻松地在我需要的操作中创建我的表单。
我会将此功能放在Action Helper中。动作助手可以直接从任何控制器动作中调用(并且是延迟加载的),动作助手可以访问控制器动作所做的一切,包括请求对象和视图。
例子:
<?php
class My_Action_Helper_FormCreator extends Zend_Controller_Action_Helper_Abstract {
public function direct($options = null)
{
$request = $this->getRequest();
$view = $this->getActionController()->view;
$form = new Application_Form_SomeForm();
// set form options here...
$view->form = $form; // optional - assign form directly to the view
return $form;
}
}
将该代码放入library/My/Action/Helper/FormCreator.php
(或在需要的地方并更改类名)。
然后,在你的行动中,这样称呼它:
$form = $this->_helper->FormCreator();
最后,我们需要告诉助手代理在哪里可以找到这个动作助手。为此,请将其添加到您的引导程序中:
protected function _initActionHelpers() {
Zend_Controller_Action_HelperBroker::addPrefix('My_Action_Helper');
}
希望有帮助。