V4n*_*ll4 5 php laravel laravel-5
我试图使用$input->all()而不是Input::all()在Laravel-5中,但它似乎不喜欢它,即使我将Input引用传递给函数,如下所示:
/**
* Search for a specified resource.
*
* @return Response
*/
public function search(Booking $booking, Input $input)
{
dd($input->all()); // this doesn't work
dd(Input::all()); // this DOES work
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
Call to undefined method Illuminate\Support\Facades\Input::all()
有没有人有这个问题的解决方案?
我不认为你应该将Facades注入你的控制器.Input是一个外观Illuminate\Http\Request,它的服务容器绑定是request.所以根据文档,在Laravel 5中你可以做到Request::all(),你可以在Laravel 5.1中做到$request->all()
http://laravel.com/docs/5.0/requests#retrieving-input http://laravel.com/docs/5.1/requests#retrieving-input
编辑:这篇文章提供了一些更深入的信息:https://stackoverflow.com/a/29961400/2433843
EDIT3:我认为如果有人可以解释为什么你不能将Facades注入控制器中会很棒.我完全理解DI和Facades是两个不同的东西,而L5 +正在将开发人员推向DI.我只是不完全理解为什么注入一个外观不起作用,因为它指向另一个类,并且当你不注入它时它可以工作.不要忘记外墙和别名也是两个独立的东西.我希望有人可以详细说明这一点.