我尝试了LaravelIdeComm上的getting started指南。
有一章 * 创建任务 *。有$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('/');
});
3条答案
按热度按时间ckx4rj1h1#
您的控制器函数被注入了一个Illuminate\Support\Facades\Request的示例,该示例仅将静态调用转发到底层的request对象。
为了解决这个问题,你需要导入底层请求类,这样它才能被正确地注入。在你的routes.php文件的顶部添加以下代码:
或者只调用Request::all()而不是$request-〉all()。
k2arahey2#
由于这段代码位于routes.php文件中,而该文件没有命名空间,因此注入闭包的
Request
对象是Request
facade,而不是Illuminate\Http\Request
对象,Request
facade没有all()
方法。将代码更改为:
注意:你通常不会完全限定控制器方法中的
Request
对象,因为控制器通常会在顶部添加一个use Illuminate\Http\Request;
。这就是为什么你在routes文件中的函数定义看起来和控制器方法定义有点不同。您可以查看this answer了解更多信息。
yhived7q3#
您可以使用以下方法