如何在 ZF2 的控制器构造函数中获取 headers?
How can I get headers inside controller's constructor in ZF2?
我正在尝试在控制器 Class 的构造函数中获取 header,例如
$this->params()->fromHeader();
但是它不起作用有没有其他方法可以在构造函数
中获取header
我在 header 中传递 userId,所以我希望在 Constructor 中可以吗?
谢谢。
我没有测试过,但试试这个:
$headers = $this->getRequest()->getHeaders();
$user_param = $headers->get('user');
$user_value = $user_param->getFieldValue();
其实我刚刚用这个
找到了它
$headers=apache_request_headers();
您似乎想从自定义 header 中获取用户 ID。简短的回答是肯定的,这是可能的。但是在 constructor
中执行此操作可能不是正确的方法,因为所有 MVC 控制器都由 ControllerManager.
实例化
您需要在控制器中实施 onDispatch()
方法,以便在调度实际操作之前检查 header 值。
试试这个:
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\Mvc\MvcEvent;
class MyController extends AbstractActionController
{
/**
* On dispatch event
*
* @param MvcEvent $event
*/
public function onDispatch(MvcEvent $e)
{
$headers = $e->getRequest()->getHeaders();
if($headers->has('user')) {
// User header is provided.
$header = $headers->get('user');
// ... here you can do what you want with this header.
}
// Don't forget to trigger parent's dispatch.
return parent::onDispatch($e);
}
我正在尝试在控制器 Class 的构造函数中获取 header,例如
$this->params()->fromHeader();
但是它不起作用有没有其他方法可以在构造函数
中获取header我在 header 中传递 userId,所以我希望在 Constructor 中可以吗?
谢谢。
我没有测试过,但试试这个:
$headers = $this->getRequest()->getHeaders();
$user_param = $headers->get('user');
$user_value = $user_param->getFieldValue();
其实我刚刚用这个
找到了它$headers=apache_request_headers();
您似乎想从自定义 header 中获取用户 ID。简短的回答是肯定的,这是可能的。但是在 constructor
中执行此操作可能不是正确的方法,因为所有 MVC 控制器都由 ControllerManager.
您需要在控制器中实施 onDispatch()
方法,以便在调度实际操作之前检查 header 值。
试试这个:
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\Mvc\MvcEvent;
class MyController extends AbstractActionController
{
/**
* On dispatch event
*
* @param MvcEvent $event
*/
public function onDispatch(MvcEvent $e)
{
$headers = $e->getRequest()->getHeaders();
if($headers->has('user')) {
// User header is provided.
$header = $headers->get('user');
// ... here you can do what you want with this header.
}
// Don't forget to trigger parent's dispatch.
return parent::onDispatch($e);
}