在 Zend Framework 中为多个操作创建表单


Create form for several actions in Zend Framework

我有一个上传表单,它显示在覆盖/灯箱/播放器上。它仅适用于多个控制器中的多个操作。

创建此表单需要 ~6 行代码,并且需要访问 REQUEST 对象才能从中获取参数。

应该把这段代码放在哪里,这样我才能轻松地在我需要的操作中创建我的表单。

我会将此功能放在操作助手中。 操作帮助程序可以直接从任何控制器操作(并且是延迟加载的)调用,操作帮助程序可以访问控制器操作执行的所有操作,包括请求对象和视图。

例:

<?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');
}

希望有帮助。