【问题标题】:Laravel named route URL with parameter not working as expectedLaravel 命名路由 URL,参数未按预期工作
【发布时间】:2019-03-13 09:05:38
【问题描述】:

我正在尝试使用 laravel 路由助手生成带参数的 url,

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');

这里有什么问题?

【问题讨论】:

    标签: php laravel routes


    【解决方案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

    【讨论】:

    • @FortunaglobalDevelopment 您调用了错误的路线,您将其定义为admin.categories.edit 但您调用的是frontend.admin.categories.edit。请参阅编辑#1
    • 你有重复的命名路由吗?
    • 没有。这也发生在其他路线上。是配置问题。据我所知,不需要在 laravel 中配置 url 生成
    • 如果您打开 CMD 并转到您的项目 DIR 然后运行 ​​php artisan serve ,它应该说应用程序已在 localhost:port 上设置,请转到该 URL 并尝试加载该 URL。它是否以您希望的方式显示 URL?
    【解决方案2】:

    你需要为你的参数使用一个数组:

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

    如果不是,所有参数都将用作 $_GET 参数。

    【讨论】:

    • 如果路由中有多个参数,那么我们使用数组,否则可以将一个参数作为第二个参数传递
    【解决方案3】:

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

    希望这会有所帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-02
      • 2016-08-19
      • 2015-09-09
      • 1970-01-01
      • 2014-03-26
      • 2020-06-29
      • 1970-01-01
      相关资源
      最近更新 更多