所以我不确定如何解决这个问题我已经尝试了一些事情,我将在下面列出一个但是我想要做的是在PHP变量中的http请求中发送的存储信息。
这是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');
尝试将Illuminate\Http\Request
更改为Request
。
- use Illuminate\Http\Request;
+ use Request;
你在两个层面上误解了Laravel请求对象。
首先,您得到的错误是因为您引用的是对象而不是Facade。 Facades有一种方法可以将静态方法调用转发给非静态方法。
其次,您将值作为标头发送,但正在尝试访问请求参数。这永远不会给你你想要的东西。
以下是通过创建测试路径来查看所需内容的示例的简单方法:
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']
*/
}
}
运用
echo app('request')->header('pubapi');
代替
echo Request::header('pubapi');
似乎工作完美。有人可以提供额外的解释为什么这工作,我的原始方法没有?
实际上你是静态调用它,这就是为什么它没有得到适当的Request类和抛出错误,可以这样做
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);
}
}