Zend Framework:在bootstrap中获取请求对象

时间:2010-04-12 14:42:13

标签: php zend-framework request bootstrapping

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

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

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

3 个答案:

答案 0 :(得分: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,您可以直接在引导程序中异常读取

但最有可能的是,您希望在front controller plugin中使用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
     }
}

答案 1 :(得分:10)

您不应该获得请求objet,因为如果您看到调度循环,那么想法是引导程序是在请求中执行之前的操作。

如果您需要更改某个应用程序,请使用Controller插件来执行此操作。

答案 2 :(得分:0)

您需要首先引导frontController,尝试类似:

function initFoo()
{
    $this->bootstrap('frontController');
    $req = $this->frontController->getRequest();
}