12

如何从引导文件中获取请求对象?

我可以尝试这种方法但不起作用。

$request= new Zend_Controller_Request_Http();
$request = Zend_Controller_FrontController::getInstance()->getRequest();
4

3 回答 3

12

如果你真的想,你可以实现这个调用:

public function _initRequest()
{
    $this->bootstrap('frontController');
    $front = $this->getResource('frontController');
    $front->setRequest(new Zend_Controller_Request_Http());

    $request = $front->getRequest();
}

但是,应该避免这种情况,因为您需要的来自 Response 对象的大部分数据将在前端控制器被调度后可用(例如,模块、控制器或动作名称)。

存储在 Response 对象中的其他变量是从全局数组中提取的,例如$_SERVER,$_POST或者$_GET您可以在引导程序中直接读取这些变量。

但最有可能的是,您想在前端控制器插件中使用 Response 对象:

class Your_Controller_Plugin_PluginName extends Zend_Controller_Plugin_Abstract
{
     public function preDispatch(Zend_Controller_Request_Abstract $request)
     {
         // do anything with the $request here
     }
}
于 2010-04-13T07:41:07.207 回答
10

你不应该得到请求对象,因为如果你看到调度循环,这个想法是引导程序是在请求中执行之前的动作。

如果您需要以某种方式更改应用程序,请使用控制器插件来执行此操作。

于 2010-04-12T17:49:24.340 回答
0

您需要先引导 frontController,尝试以下操作:

function initFoo()
{
    $this->bootstrap('frontController');
    $req = $this->frontController->getRequest();
}
于 2010-04-12T16:11:58.157 回答