You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel路由管理:Laravel 5.6中如何添加指定URL路由?

嘿,我来帮你搞定这个Laravel 5.6的路由配置问题!

你已经有了localhost:8000/admin/products的商品列表资源路由,现在要新增localhost:8000/admin/products/type的分类列表页,这里给你几个清晰可行的方案:

方案1:直接添加单独的GET路由(推荐,适合仅列表页需求)

如果分类只是需要一个列表展示,不需要完整的CRUD操作,直接写个GET路由最简洁:

$this->namespace('Products')->group(function () {
    // 保留原有的商品资源路由
    $this->resource('products', 'IndexController');
    
    // 新增商品分类列表路由,指定路由名称方便后续生成URL
    $this->get('products/type', 'TypeController@index')->name('products.type.index');
});

这里要注意:你的TypeController要放在app/Http/Controllers/Products目录下(因为命名空间是Products),在index方法里写分类列表的逻辑就行。后续要跳转或者生成这个URL的时候,直接用route('products.type.index')就可以了。

方案2:嵌套资源路由(适合后续要扩展分类CRUD的场景)

如果之后你想给分类加创建、编辑、删除等操作,用嵌套资源路由更规范:

$this->namespace('Products')->group(function () {
    $this->resource('products', 'IndexController');
    
    // 仅启用index方法的嵌套资源路由,对应分类列表
    $this->resource('products.type', 'TypeController')->only(['index']);
});

这种方式生成的路由名称也是products.type.index,和方案1一致,后续要加其他方法的话,直接修改only数组或者去掉only限制即可。

方案3:用前缀+名称前缀的路由组(更规整的子路由管理)

如果你还想给商品加其他子路由(比如批量导出、筛选页等),可以用这种方式统一管理前缀和名称前缀:

$this->namespace('Products')->group(function () {
    $this->resource('products', 'IndexController');
    
    // 统一给子路由加products前缀和products.的名称前缀
    $this->name('products.')->prefix('products')->group(function () {
        $this->get('type', 'TypeController@index')->name('type.index');
        // 后续加其他子路由直接在这里写就行,比如$this->get('export', 'ExportController@index')->name('export');
    });
});

这种写法的好处是不用重复写products前缀和路由名称前缀,后续扩展更省心。

不管选哪种方案,记得对应的控制器要放在正确的命名空间目录下,不然会报找不到控制器的错误哦~

内容的提问来源于stack exchange,提问作者Justin Wastnage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:32:28