2010-06-22 3 views
9

Короче говоря: Я создаю скелетное приложение для Zend Framework, и я добрался до той части, где мне нужно установить модуль api. Я использую Zend_Rest_Controller для этой работы. Все в порядке до этой части, где мне нужно получить заголовки HTTP в контроллере, чтобы проверить ключ api.Чтение заголовков HTTP в контроллере (Zend Framework)

В различных учебных пособиях, которые я читал в Интернете, это делается с помощью плагина переднего контроллера, но мне нужно, чтобы он был более «подключи и играй», чем это (каждый раз проверяя конфигурацию приложения, модуль - это api и т. д.).

Я пробовал то, что казалось самым очевидным $this->getRequest()->getHeaders(), но, похоже, не работает, по крайней мере, не для заголовков HTTP, где я буду пресекать мой ключ api. Ни объект reponse.

Может ли кто-нибудь помочь мне с этим?

ответ

18

Я нашел способ сделать это после того, как все :)

О методе preDispatch() в контроллере вы можете сделать следующее:

public function preDispatch() 
{ 
    $request = new Zend_Controller_Request_Http(); 
    $key = $request->getHeader('x-apikey'); 
} 

кажется, что Zend_Controller_Request_Http объект дает вам доступ ко заголовкам , Подробнее о Zend_Controller_Request_Http вы найдете here

8

Как сказал Богдан, вы можете найти эту информацию в классе Zend_Controller_Request_HTTP. Он может быть найден в самом контроллере, выполнив:

$this -> getFrontController() -> getRequest() -> getHeader('Content-Type'); 

Unfortunatly, вы не можете получить доступ все заголовки сразу, но что ZF делает просто использовать apache_request_headers() функцию, если на сервере, чтобы получить их.

+0

Когда я запускаю это из подкласса Mage_Customer_AccountController, результатом является фатальная ошибка: 'Вызов неопределенного метода Namespace_Module_AccountController :: getFrontController()'. Я использую Magento v 1.9.1.0. – quickshiftin

+0

@quickshiftin - конечно, потому что это методы Zend Framwork, а Magento их нет. – PVGrad

+0

@PVGrad Полезно знать, спасибо за разъяснение. – quickshiftin

Смежные вопросы