在Laravel中,我试图在我的控制器中的store()
方法上调用$输入=请求::all();
,但我得到以下错误:
假设$this
来自不兼容的上下文,则不应静态调用非静态方法illighted\Http\Request::all()
有什么能帮助找出纠正这种情况的最好方法吗?(我跟着一个Laracast)
使用Laravel的magic injection将请求对象注入控制器,然后以非静态方式访问该函数。Laravel将自动向自动加载的类中注入具体的依赖项
class MyController()
{
protected $request;
public function __construct(\Illuminate\Http\Request $request)
{
$this->request = $request;
}
public function myFunc()
{
$input = $this->request->all();
}
}
请改用request()
helper。您不必担心use
语句,因此此类问题不会再次发生。
$input = request()->all();
简单的
错误消息是由于调用未通过请求
门面造成的。
改变
use Illuminate\Http\Request;
到
use Request;
它应该开始工作了。
在config/app.php文件中,可以找到类别名的列表。在那里,您将看到基类Request
已被别名为illumb\Support\Facades\Request
类。因此,要在命名空间文件中使用请求
外观,需要指定使用基类:使用请求
。
由于这个问题似乎获得了一些流量,我想在Laravel 5正式发布后更新一下答案。
虽然上述内容在技术上仍然正确并且可以使用,
use-illumb\Http\Request
语句包含在新的控制器模板中,以帮助开发人员朝着使用依赖注入而不是依赖外观的方向前进。
将请求对象注入构造函数(或方法,如Laravel 5中提供的)时,应该注入的是
illighted\Http\Request
对象,而不是Request
facade。
因此,与其将Controller模板更改为使用请求门面,不如建议使用给定的Controller模板,并转向使用依赖注入(通过构造函数或方法)。
示例via方法
<?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');
}
}
我最近对 PHP 5.4 进行了更新,但收到有关静态和非静态代码的错误。 这是错误: 这是第371行: 我希望有人能帮忙。
我正在使用存储库模式并尝试建立模型之间的关系。当我尝试运行存储()方法(在控制器中),该方法试图使用用户()方法(与方模型建立关系)时,我收到以下错误消息: 非静态方法不应该静态调用::user(),假设$this来自不兼容的上下文 我不明白为什么在尝试运行user()relationship方法时会出现此错误,但所有其他方法(包括$this- 以下是相关代码:
我一直试图用我的验证代码进行php pear验证,但我收到的都是严格标准错误--问题是什么?我如何修复它? 电子邮件验证.php
PHP严格标准:不应在第33行的/web/sites/blah/somescript.PHP中静态调用非静态方法pear::iserror() 我在MDB2上看到了类似的错误。稍后再详细介绍。 somescript.php: 问题 是否有不同的方法来调用而不会产生错误?
问题内容: 在Laravel,我想打电话给一个在我的控制器的方法,但我发现了以下错误: 从不兼容的上下文中假设,非静态方法不应静态调用 有什么帮助找出解决此问题的最佳方法吗?(我正在观看Laracast) 问题答案: 该错误消息是由于呼叫未通过立面而导致的。 更改 至 它应该开始工作。 在config / app.php文件中,您可以找到类别名的列表。在那里,您将看到基类已被别名为该类。因此,要在
我正在尝试在varGrant CentOS VM上本地运行一个codegniter站点。我已经下载了所有文件,并设置了yaml/host文件等。 我在屏幕上看到这个错误。 遇到 PHP 错误 严重性:8192 消息:非静态方法 MY_Loader::d efine_module() 不应静态调用,假设$this来自不兼容的上下文 文件名:controllers/Front _ controller