首页 > 解决方案 > Laravel 从 URL 获取未命名的“GET”参数 id

问题描述

我试图从看起来或多或少像这样的 url 中获取一个值:

http://localhost:8000/new-user/7

作为参数在 url 中传递的这个数字 7 是一个 ID,我在其中从刀片表单提交作为对我在控制器中执行的操作的请求,但无论如何我都无法获得这个值。这是我到目前为止所尝试的:

我试图在我提交表单的控制器中使用它

$request->route('company_id');

我还尝试将其作为正确的 GET 参数:

<input type="hidden" name="company_id" id="company_id" value="{{app('request')->input('company_id')}}">

我也试过这个:

<input type="hidden" name="company_id" id="company_id" value="{{Input::get('company_id')}}">

和这个:

<input type="hidden" name="company_id" id="company_id" value="{{$_GET['company_id']}}">

这些选项都不起作用,我仍然收到一个空值。

关于如何获得此变量的任何想法或建议?

谢谢!

标签: phplaravellaravel-bladeurl-parametersget-request

解决方案


路由参数查询参数是两个不同的东西。

如果您有这样定义的路线:

/** routes/web.php */

Route::get('/new-user/{id}', 'UsersController@show');

在这种情况下$id是一个路由参数。因此,要进入刀片视图,您可以执行以下操作:

/** resources/my_view.blade.php */

{{ request()->id }}

因此,对于您使用的请求http://localhost:8000/new-user/7,应该输出:7.

另一种情况是当您有查询参数时。这些变量不需要在路由中定义。例如这种类型的调用,使用前面示例中定义的相同路由:

GET http://localhost:8000/new-user/7?foo=bar
                                    ^^^^^^^^

在这种情况下,foo=bar可以像这样访问:

{{ request()->query('foo') }} // 'bar'

推荐阅读