我尝试了Laravel.com的入门指南.
创建任务有一章.有$request
一个回调参数,在函数$request->all()
中用于获取GET参数.但是,如果我执行该回调,我会得到错误
致命错误:调用未定义的方法Illuminate\Support\Facades\Request :: all()
这是我的代码:
Route::post('/task', function(Request $request) {
$validator = Validator::make($request->all(), [
'name' => 'required|max:255',
]);
if($validator->fails())
redirect('/')->withInput()->withErrors($validator);
$task = new Task();
$task->name = $request['name'];
$task->save();
return redirect('/');
});
jedrzej.kury.. 56
您的控制器函数会注入一个Illuminate\Support\Facades\Request实例,该实例仅转发对底层请求对象的静态调用.
为了解决这个问题,您需要导入基础请求类,以便正确注入它.在routes.php文件的顶部添加以下内容:
use Illuminate\Http\Request;
或者只调用Request :: all()而不是$ request-> all().
您的控制器函数会注入一个Illuminate\Support\Facades\Request实例,该实例仅转发对底层请求对象的静态调用.
为了解决这个问题,您需要导入基础请求类,以便正确注入它.在routes.php文件的顶部添加以下内容:
use Illuminate\Http\Request;
或者只调用Request :: all()而不是$ request-> all().
由于此代码位于不是命名空间的routes.php文件中,因此Request
注入到闭包中Request
的Illuminate\Http\Request
对象是外观,而不是对象.该Request
门面没有一个all()
方法.
将您的代码更改为:
Route::post('/task', function(\Illuminate\Http\Request $request) { // code });
注意:您通常不会完全限定Request
Controller方法中的对象,因为控制器通常会use Illuminate\Http\Request;
在顶部添加一个.这就是为什么路由文件中的函数定义可能与控制器方法定义略有不同.
您可以查看此答案以获取更多信息.