2010-06-22 18 views
9

Resumen largo: Estoy construyendo una aplicación básica para Zend Framework y llegué a la parte donde necesito configurar el módulo api. Estoy usando Zend_Rest_Controller para este trabajo. Todo está bien hasta esta parte donde necesito obtener los encabezados HTTP en un controlador para verificar la clave api.Leer encabezados HTTP en el Controlador (Zend Framework)

En varios tutoriales que he leído en la web, lo hago a través de un complemento de controlador frontal, pero necesito que sea más "plug and play" que eso (comprobando cada vez la configuración de la aplicación, decidiendo qué módulo es la API, etc.).

Intenté lo que parecía más obvio $this->getRequest()->getHeaders() pero parece que no funciona, al menos no para los encabezados HTTP donde estaré soliendo mi clave de API. Ni el objeto reponse.

¿Alguien me puede ayudar con esto?

Respuesta

18

he encontrado una manera de hacer esto, después de todo :)

En el método preDispatch() en su controlador puede hacer lo siguiente:

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

Parece que Zend_Controller_Request_Http objeto le da Acceso a los encabezados . Más información sobre Zend_Controller_Request_Http puede encontrar here

8

Como dijo Bogdan, puede encontrar esa información en la clase Zend_Controller_Request_HTTP. Se puede encontrar en el propio controlador haciendo:

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

Por desgracia, no se puede acceder a todas las cabeceras a la vez, pero lo que hace es ZF sólo tiene que utilizar apache_request_headers() la función si está disponible en el servidor para obtenerlos.

+0

Cuando ejecuto esto desde una subclase de 'Mage_Customer_AccountController' el resultado es un error fatal:' Llamada al método indefinido Namespace_Module_AccountController :: getFrontController() '. Estoy usando Magento v 1.9.1.0. – quickshiftin

+0

@quickshiftin, por supuesto, porque estos son métodos de Zend Framwork y Magento no los tiene. – PVGrad

+0

@PVGrad Es bueno saberlo, gracias por la aclaración. – quickshiftin