当前位置: 首页 > 面试题库 >

Laravel Request :: all()不应被静态调用

漆雕硕
2023-03-14
问题内容

在Laravel,我想打电话给$input = Request::all();一个store()在我的控制器的方法,但我发现了以下错误:

从不兼容的上下文中Illuminate\Http\Request::all()假设$this,非静态方法不应静态调用

有什么帮助找出解决此问题的最佳方法吗?(我正在观看Laracast)


问题答案:

该错误消息是由于呼叫未通过Request立面而导致的。

更改

use Illuminate\Http\Request;

use Request;

它应该开始工作。

在config /
app.php文件中,您可以找到类别名的列表。在那里,您将看到基类Request已被别名为Illuminate\Support\Facades\Request该类。因此,要Request在命名空间文件中使用外观,您需要指定使用基类:use Request;

编辑

由于这个问题似乎吸引了一些访问者,自Laravel 5正式发布以来,我想对答案进行一些更新。

尽管以上内容在技术上仍然正确并且可以使用,但该use Illuminate\Http\Request;语句包含在新的Controller模板中,以帮助推动开发人员朝着使用依赖项注入而不是依赖Facade的方向发展。

当将Request对象注入构造函数(或方法,如Laravel
5中可用)时,Illuminate\Http\Request应该注入的是对象,而不是Request立面。

因此,最好不要使用Controller模板以使其与Request门面配合使用,而是建议使用给定的Controller模板并转向使用依赖项注入(通过构造函数或方法)。

方法示例

<?php namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class UserController extends Controller {

    /**
     * Store a newly created resource in storage.
     *
     * @param  Illuminate\Http\Request  $request
     * @return Response
     */
    public function store(Request $request) {
        $name = $request->input('name');
    }
}

通过构造函数的例子

<?php namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class UserController extends Controller {

    protected $request;

    public function __construct(Request $request) {
        $this->request = $request;
    }

    /**
     * Store a newly created resource in storage.
     *
     * @return Response
     */
    public function store() {
        $name = $this->request->input('name');
    }
}


 类似资料:
  • 在Laravel中,我试图在我的控制器中的方法上调用,但我得到以下错误: 假设来自不兼容的上下文,则不应静态调用非静态方法 有什么能帮助找出纠正这种情况的最好方法吗?(我跟着一个Laracast)

  • 我最近对 PHP 5.4 进行了更新,但收到有关静态和非静态代码的错误。 这是错误: 这是第371行: 我希望有人能帮忙。

  • 我正在使用存储库模式并尝试建立模型之间的关系。当我尝试运行存储()方法(在控制器中),该方法试图使用用户()方法(与方模型建立关系)时,我收到以下错误消息: 非静态方法不应该静态调用::user(),假设$this来自不兼容的上下文 我不明白为什么在尝试运行user()relationship方法时会出现此错误,但所有其他方法(包括$this- 以下是相关代码:

  • 我一直试图用我的验证代码进行php pear验证,但我收到的都是严格标准错误--问题是什么?我如何修复它? 电子邮件验证.php

  • PHP严格标准:不应在第33行的/web/sites/blah/somescript.PHP中静态调用非静态方法pear::iserror() 我在MDB2上看到了类似的错误。稍后再详细介绍。 somescript.php: 问题 是否有不同的方法来调用而不会产生错误?

  • 我正在尝试在varGrant CentOS VM上本地运行一个codegniter站点。我已经下载了所有文件,并设置了yaml/host文件等。 我在屏幕上看到这个错误。 遇到 PHP 错误 严重性:8192 消息:非静态方法 MY_Loader::d efine_module() 不应静态调用,假设$this来自不兼容的上下文 文件名:controllers/Front _ controller