【问题标题】:Zend Framework: Getting request object in bootstrapZend 框架:在引导程序中获取请求对象
【发布时间】:2011-02-07 01:11:31
【问题描述】:

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

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

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

【问题讨论】:

    标签: php zend-framework request bootstrapping


    【解决方案1】:

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

    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
         }
    }
    

    【讨论】:

    • preDispatch 是执行此操作的正确方法。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      你需要先启动frontController,试试这样的:

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

      【讨论】:

      • 没有工作!返回:“致命错误:调用成员函数getParam()”
      • 我觉得第二行应该是$this->getResource('frontController')
      • 另外,这不是 _initFoo() 吗?
      猜你喜欢
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多