使用$ input-> all()而不是Input :: all()Laravel-5

时间:2015-06-30 15:21:19

标签: php laravel laravel-5

我试图在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()

有没有人能解决这个问题?

2 个答案:

答案 0 :(得分:7)

我不认为您应该将Facades注入您的控制器。 InputIlluminate\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以后是否使用“输入”或“请求”感到困惑。