Laravel Request :: all()不应被静态调用
在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 Request :: all()不应被静态调用 的全部内容, 来源链接: utcz.com/qa/422706.html