Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在控制器';ZF2中的s构造函数?_Php_Constructor_Zend Framework2 - Fatal编程技术网

Php 如何在控制器';ZF2中的s构造函数?

Php 如何在控制器';ZF2中的s构造函数?,php,constructor,zend-framework2,Php,Constructor,Zend Framework2,我试图在控制器类的构造函数中获取头,如 $this->params()->fromHeader(); 但它不起作用。还有其他方法可以在构造函数中获取头吗 我在头中传递userId,所以我想在构造函数中传递userId,这可能吗 谢谢。我没有测试,但请尝试以下方法: $headers = $this->getRequest()->getHeaders(); $user_param = $headers->get('user'); $user_value = $use

我试图在控制器类的构造函数中获取头,如

$this->params()->fromHeader();
但它不起作用。还有其他方法可以在构造函数中获取头吗

我在头中传递userId,所以我想在构造函数中传递userId,这可能吗


谢谢。

我没有测试,但请尝试以下方法:

$headers = $this->getRequest()->getHeaders();
$user_param = $headers->get('user');
$user_value = $user_param->getFieldValue();

实际上我刚刚用这个找到它

$headers=apache_request_headers();

似乎您想从自定义标题中获取用户id。简而言之,是的,这是可能的。但是在
构造函数中执行此操作可能不是正确的方法,因为所有MVC控制器都是由实例化的

您需要的是在控制器中实现
onDispatch()
方法,以便在分派实际操作之前检查标题值

试试这个:

<?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);
    }

no它返回空数组这是输出Zend\Http\Headers对象([pluginClassLoader:protected]=>[headersKeys:protected]=>Array()[Headers:protected]=>Array())我的意思是,它没有提供我已通过的标头使用firebug检查您的http请求或ajax请求,并检查它是否真的发送标头。我不会重新发现:似乎是apache特有的,而且如果您使用的是框架,则更好地使用内置框架函数$headers=$this->getRequest()->getHeaders();没有给我任何标题