laravel Request::all()中未定义的方法

txu3uszq  于 2023-01-27  发布在  其他
关注(0)|答案(3)|浏览(172)

我尝试了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('/');
});
ckx4rj1h

ckx4rj1h1#

您的控制器函数被注入了一个Illuminate\Support\Facades\Request的示例,该示例仅将静态调用转发到底层的request对象。
为了解决这个问题,你需要导入底层请求类,这样它才能被正确地注入。在你的routes.php文件的顶部添加以下代码:

use Illuminate\Http\Request;

或者只调用Request::all()而不是$request-〉all()

k2arahey

k2arahey2#

由于这段代码位于routes.php文件中,而该文件没有命名空间,因此注入闭包的Request对象是Request facade,而不是Illuminate\Http\Request对象,Request facade没有all()方法。
将代码更改为:

Route::post('/task', function(\Illuminate\Http\Request $request) {
    // code
});

注意:你通常不会完全限定控制器方法中的Request对象,因为控制器通常会在顶部添加一个use Illuminate\Http\Request;。这就是为什么你在routes文件中的函数定义看起来和控制器方法定义有点不同。
您可以查看this answer了解更多信息。

yhived7q

yhived7q3#

您可以使用以下方法

$request::all()

相关问题