我尝试在Laravel-5中使用$input->all()而不是Input::all(),但是它似乎不喜欢它,尽管我将输入引用传递给函数,如下所示:
/**
* 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
}我得到的错误是:
Call to undefined method Illuminate\Support\Facades\Input::all()
有谁有解决这个问题的办法吗?
发布于 2015-06-30 23:34:53
我不认为你应该在你的控制器中注入外观。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:我认为如果有人能解释一下为什么你不能将Facade注入到你的控制器中,那就太好了。我知道DI和Facade是两个完全不同的东西,而L5+正在推动开发人员走向DI。我只是不太明白为什么注入一个facade不会起作用,因为它指向另一个类,而当你不注入它的时候它就会起作用。不要忘记外观和别名也是两个独立的东西。我希望有人能详细说明这一点。
发布于 2016-04-18 20:33:15
使用Request或 Input 访问用户输入的另一件重要事情是您使用的Laravel的版本。
在Laravel4.2和更早的版本中,您可以访问 Input ::all(),Input::get(),但是从Laravel5开始,建议通过Request外观使用输入
参考:https://laravel.com/docs/5.2/requests
如果您想要在Laravel5.0和更高版本中使用Input,那么您需要在Illuminate\Support\Facades\Input::class别名部分下的config/app.php文件中添加这个facade作为'Input‘=> facade
一旦在别名下添加了facade,就应该开始使用'Input::all()‘
希望这能对其他人有所帮助,他们对Laravel 5.0以后的版本是使用'Input‘还是'Request’感到困惑。
https://stackoverflow.com/questions/31142292
复制相似问题