如何在 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);
    }