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

如何在Yii2中将拆分后的控制器逻辑整合到planning目录下?

Yii2 拆分控制器并实现自定义路由方案

1. 创建拆分后的控制器

在dashboard模块的controllers目录下,分别新建PurchaseController.php和SupplierController.php,将原PlanningController中对应业务的动作迁移过来:

PurchaseController.php

namespace app\modules\dashboard\controllers;

use yii\web\Controller;

class PurchaseController extends Controller
{
    // 对应原路由 /dashboard/planning/purchase
    public function actionIndex()
    {
        // 原PlanningController::actionPurchase()的业务逻辑
    }

    // 对应目标路由 /dashboard/planning/purchase/create
    public function actionCreate()
    {
        // 原PlanningController::actionPurchaseCreate()的业务逻辑
    }

    // 对应目标路由 /dashboard/planning/purchase/update
    public function actionUpdate($id)
    {
        // 原PlanningController::actionPurchaseUpdate()的业务逻辑
    }
}

SupplierController.php

namespace app\modules\dashboard\controllers;

use yii\web\Controller;

class SupplierController extends Controller
{
    // 对应原路由 /dashboard/planning/supplier
    public function actionIndex()
    {
        // 原PlanningController::actionSupplier()的业务逻辑
    }

    // 对应目标路由 /dashboard/planning/supplier/create
    public function actionCreate()
    {
        // 原PlanningController::actionSupplierCreate()的业务逻辑
    }

    // 对应目标路由 /dashboard/planning/supplier/update
    public function actionUpdate($id)
    {
        // 原PlanningController::actionSupplierUpdate()的业务逻辑
    }
}

2. 配置路由映射规则

在dashboard模块的Module.php中,重写init()方法,添加自定义URL规则,将目标路由映射到新控制器的动作:

namespace app\modules\dashboard;

use yii\base\Module;

class Module extends Module
{
    public $controllerNamespace = 'app\modules\dashboard\controllers';

    public function init()
    {
        parent::init();

        // 追加路由规则,避免覆盖全局规则
        \Yii::$app->urlManager->addRules([
            // 采购业务路由映射
            'dashboard/planning/purchase' => 'dashboard/purchase/index',
            'dashboard/planning/purchase/create' => 'dashboard/purchase/create',
            'dashboard/planning/purchase/update/<id:\d+>' => 'dashboard/purchase/update',
            
            // 供应商业务路由映射
            'dashboard/planning/supplier' => 'dashboard/supplier/index',
            'dashboard/planning/supplier/create' => 'dashboard/supplier/create',
            'dashboard/planning/supplier/update/<id:\d+>' => 'dashboard/supplier/update',
        ], false);
    }
}

3. 清理原控制器(可选)

如果原PlanningController不再使用,可以直接删除或重命名,避免路由冲突。

内容的提问来源于stack exchange,提问作者daniil sidorov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:22:23