当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Request::all()中的未定义方法》经验,为你挑选了2个好方法。

我尝试了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().



1> jedrzej.kury..:

您的控制器函数会注入一个Illuminate\Support\Facades\Request实例,该实例仅转发对底层请求对象的静态调用.

为了解决这个问题,您需要导入基础请求类,以便正确注入它.在routes.php文件的顶部添加以下内容:

use Illuminate\Http\Request;

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


谢谢,但如果将这些信息放入本指南,那将会很好.

2> patricus..:

由于此代码位于不是命名空间的routes.php文件中,因此Request注入到闭包中RequestIlluminate\Http\Request对象是外观,而不是对象.该Request门面没有一个all()方法.

将您的代码更改为:

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

注意:您通常不会完全限定RequestController方法中的对象,因为控制器通常会use Illuminate\Http\Request;在顶部添加一个.这就是为什么路由文件中的函数定义可能与控制器方法定义略有不同.

您可以查看此答案以获取更多信息.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有