如何在 laravel 中使用路由名称传递查询参数?

How to pass Query parameter using route name in laravel?

我知道这个

{{route('editApplication', ['id' => $application->id])}} == /application/edit/{id}

但我需要

?? == /application/edit?appId=id

任何人,请替换“??”你的回答对我有帮助。

route 方法接受任何变量集并将它们作为查询字符串,除非变量名称与定义的路由签名匹配。

因此,对于您的情况,您可以执行以下操作:

route('editApplication', ['appId' => <your id here>])

您可以为数组提供任意数量的变量。

这取决于你的路线:

如果你的路线是:

Route::get('/application/edit/{id}', 'SomeController')->name('editApplication');

当你使用

route('editApplication', ['id' => 5])

url会变成这样:

/application/edit/5

然而,所有其他参数(不在路由参数中)将用作查询字符串,例如:

route('editApplication', ['id' => 5, 'first' => 'foo', 'second' => 'bar'])

将生成 url 像这样:

/application/edit/5?first=foo&second=bar

如果你想达到这样的效果url

/application/edit?appId=id

你应该这样定义路由:

Route::get('/application/edit/', 'SomeController')->name('editApplication');

然后当你使用

route('editApplication', ['appId' => 5])

你会得到

/application/edit?appId=5

url.

您需要修改没有参数选项的 "editApplication" 路线。如果您仍然需要该参数,只需在控制器中添加以下行,然后使用即可捕获数据;

$appId = $request->input('appId');