26

所以我不太确定如何解决这个问题我已经尝试了一些事情,我将在下面列出一个但是我想要做的是将在 HTTP 请求中发送的信息存储在 PHP 变量中。

这是 Chrome Postman 发送的我想要发送的请求的视图。注意“pubapi”是一个“标题”。

邮递员视图

我一直在处理 Lumen 请求,正如您在此处 ( http://lumen.laravel.com/docs/requests ) 所记录的那样,并尝试使用以下内容来显示它们,但它显然无法正常工作。

echo Request::all();

我把它放在我的控制器中,我有......

use Illuminate\Http\Request;

在我的控制器中。

那么我怎么能说将我发送“pubapi”的标头存储到我的控制器中的 php 变量中呢?

编辑

不确定这是否会有所帮助,但是查看 Laravel 框架文档,我看到这个http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_header尝试这样做会在我的代码中引发相同的错误。因此,例如,我尝试了以下操作并遇到了相同的错误。

echo Request::header('pubapi');
4

5 回答 5

43

您在两个层面上误解了 Laravel 请求对象。

首先,您得到的错误是因为您引用的是对象而不是外观。门面有一种将静态方法调用转发到非静态方法的方法。

其次,您将值作为标头发送,但正在尝试访问请求参数。这永远不会给你你想要的。

这是一个简单的方法,通过创建这样的测试路线来查看您想要的示例:

Route::match(['get','post'], '/test', function (Illuminate\Http\Request $request) {
    dd($request->headers->all());
});

发布到这条路线,你会看到你的标题,其中一个是pubapi。请注意,路由方法定义与您提交请求的方式相匹配(即 GET 或 POST)。

让我们将其应用于控制器 ArticleController:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ArticleController extends Controller
{
    public function index(Request $request)
    {
        $pubapi = $request->header('pubapi'); // string
        $headers = $request->headers->all(); // array
        /*
          $pubapi === $headers['pubapi']
        */
    }
}
于 2016-06-19T03:28:13.907 回答
20

尝试将 更改Illuminate\Http\RequestRequest

- use Illuminate\Http\Request;
+ use Request;
于 2015-04-28T21:41:37.163 回答
13

使用

echo app('request')->header('pubapi');

代替

echo Request::header('pubapi');

似乎工作完美。有人可以提供额外的解释为什么这有效而我原来的方法没有?

于 2015-04-27T23:21:56.220 回答
2

实际上你是静态调用它,这就是为什么它没有得到适当的请求类并抛出错误,可以执行以下操作

use Illuminate\Http\Request;

//inside your controller
class YourClass extends Controller{
   public function yourFunction(Request $request){
        //for getting all the request
        dd($request->all());

        //for getting header content
        dd($request->header('pubapi'));
   }
}
于 2018-06-05T10:35:15.830 回答
0

你也可以这样做request()->header('pubapi')

我更喜欢使用request()辅助函数而不是Request对其自身进行分类。因为它可以在没有use/import 控制器中的任何类的情况下使用。

于 2020-07-03T09:53:37.583 回答