Zend Framework: получение объекта запроса в начальной загрузке - PullRequest
12 голосов
/ 12 апреля 2010

Как получить объект запроса из файла начальной загрузки?

Я могу попробовать этот метод, но он не работает.

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

Ответы [ 3 ]

12 голосов
/ 13 апреля 2010

Если вы действительно хотите, вы можете достичь этого призвания:

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
     }
}
10 голосов
/ 12 апреля 2010

Вы не должны получать объект objet, поскольку, если вы видите цикл диспетчеризации, идея состоит в том, что загрузчик - это действия, выполняемые до выполнения запроса.

Если вам нужно каким-то образом изменить приложение, используйте для этого плагин Controller.

0 голосов
/ 12 апреля 2010

Сначала вам нужно загрузить frontController, попробуйте что-то вроде:

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