我试图在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()
有没有人能解决这个问题?
答案 0 :(得分:7)
我不认为您应该将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。我只是不完全理解为什么注入一个立面是不会工作的,因为它指向另一个类,并且当你不注入它时它会起作用。不要忘记外墙和别名也是两个独立的东西。我希望有人可以详细说明这一点。
答案 1 :(得分:1)
使用请求或输入访问用户输入的另一个重要事项是您正在使用的Laravel版本。
在Laravel 4.2和之前的版本中,您可以访问 Input :: all(), Input :: get(),但是从Laravel 5开始,它已经被建议通过请求门面
使用输入参考:https://laravel.com/docs/5.2/requests
如果您想在Laravel 5.0及更高版本中使用输入,则需要在 config / app.php 文件下添加此外观。 别名部分为'输入'=>照亮\支持\外墙\输入::类强>
在别名下添加外观后,您应该开始使用'Input :: all()'
希望这有助于其他一些人,他们对Laravel 5.0以后是否使用“输入”或“请求”感到困惑。