Laravel使用参数无法按预期命名路由URL

时间:2019-03-13 09:05:38

标签: php laravel routes

我正在尝试使用laravel route helper生成带有参数的网址,

route('frontend.admin.categories.edit', $catRequest->id)

但这是生成的网址

http://localhost:8000/admin/categories/edit?1

我需要这样的网址

http://localhost:8000/admin/categories/edit/1

这是我的路线

 Route::get('admin/categories/edit/{id}', 'CategoryController@edit')
        ->name('admin.categories.edit');

这是什么问题?

3 个答案:

答案 0 :(得分:1)

您需要为参数使用数组:

route('frontend.admin.categories.edit', ['id' => $catRequest->id])

否则,所有参数都将用作$ _GET参数。

答案 1 :(得分:1)

您可以通过传递关联数组而不是变量来指定要替换的参数。

更改

route('frontend.admin.categories.edit', $catRequest->id)

收件人

route('frontend.admin.categories.edit', [
    'id' => $catRequest->id
]);

编辑#1

您输入了错误的路由,您在定义中将路由命名为admin.categories.edit,但您在辅助函数(不是最初定义的路由)中调用了frontend.admin.categories.edit。因此您的代码应为:

route('admin.categories.edit', [
    'id' => $catRequest->id
]);

阅读材料

Named Routes

答案 2 :(得分:1)

尝试使用php artisan route:list查看您的路线列表。如果您在列表中找到具有正确Uri的路由,那么您将不会再在路由文件中指定具有相同Uri或相同别名的路由。

希望这会有所帮助:)