others - php Laravel Request::all() 不能被静态调用

103 5

在 Laravel 中,我试图在控制器中的store() 方法上调用 $input = Request::all();,但是得到以下错误:

非静态方法 IlluminateHttpRequest::all() 不应静态调用,假定 $this 来自不兼容的上下文

谁能帮我找出解决这个问题的最佳方法吗?

时间: 原作者:

70 3

错误消息是由于调用未通过 Request facade 。

更改


use IlluminateHttpRequest;



 
use Request;



 

它应该开始工作。

在 config/app文件中,你可以找到类别名的列表。 在那里,你将看到基类 Request 已经被别名为 IlluminateSupportFacadesRequest 类。 因此要在命名空间文件中使用 Request facade需要指定使用基类: use Request;

编辑

虽然上述技术仍然是正确的, 并且可以工作, 但 use IlluminateHttpRequest; 语句包含在新的控制器模板中, 以帮助开发人员在使用依赖注入方面而不是依赖于外观 。

虽然上述技术仍然是正确的并且可以工作但 use IlluminateHttpRequest; 语句包含在新的控制器模板中以帮助开发人员在使用依赖注入方面而不是依赖于外观 。

因此,不是更改控制器模板以使用请求外观,而是建议使用给定的控制器模板, 并转向使用依赖注入( 通过构造函数或方法)

因此,不是更改控制器模板以使用请求外观,而是建议使用给定的控制器模板并转向使用依赖注入( 通过构造函数或方法)

通过方法的示例


<?php namespace AppHttpControllers;



use AppHttpControllersController;


use IlluminateHttpRequest;



class UserController extends Controller {



/**


 * Store a newly created resource in storage.


 *


 * @param IlluminateHttpRequest $request


 * @return Response


 */


 public function store(Request $request) {


 $name = $request->input('name');


 }


}



通过构造函数示例


<?php namespace AppHttpControllers;



use AppHttpControllersController;


use IlluminateHttpRequest;



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');


 }


}



原作者:
...