Yii2将模块中的Class扩展到子模块

时间:2019-04-30 11:15:24

标签: php yii2

如何正确扩展模块? 情况是,我有一个带有subModule和subSubModule的模块。

安排如下。

- models
    - jakarta
        - admin
            - BillOfLading
    - surabaya
        - admin
            - BillOfLading


- modules
    - branch ( Parent Module )
        - controllers
            - DefaultController
        - models
        - views
        - jakarta( Sub Module )                 
            - controllers
            - models
            - views
            - admin ( Sub Sub Module)               
                - controllers
                    - BillOfLadingController
                - models
                    - BillOfLadingSearch
                - views
                    - bill-of-lading
        - surabaya( Sub Module )                    
            - controllers
            - models
            - views
            - admin ( Sub Sub Module)               
                - controllers
                    - BillOfLadingController
                - models
                    - BillOfLadingSearch
                - views
                    - bill-of-lading

所有都是通过gii生成的。 基本上,两个子模块(即雅加达和泗水)中的BillOfLadingControlller都是相同的, 数据库中只有不同的表。

如果jakarta子模块中的db_jakarta /提单中, 在泗水子模块中,它在db_surabaya /提单中

对于子模块Jakarta中的BillOfLadingController,

namespace app\modules\branch\jakarta\admin\controllers;

use app\models\jakarta\admin\BillOfLading;
use app\modules\jakarta\admin\models\BillOfLadingSearch;
use yii\filters\VerbFilter;
use yii\helpers\ArrayHelper;
use yii\web\Controller;

class BillOfLadingController extends Controller{
    // Some code generate By gii
    // action Create, Delete, Update, View
}\\

对于泗水子模块中的BillOfLadingController,

namespace app\modules\branch\surabaya\admin\controllers;

use app\models\surabaya\admin\BillOfLading;
use app\modules\surabaya\admin\models\BillOfLadingSearch;
use yii\filters\VerbFilter;
use yii\helpers\ArrayHelper;
use yii\web\Controller;

class BillOfLadingController extends Controller{
    // Some code generate By gii
    // action Create, Delete, Update, View
}

有没有更好的方式使用特征,接口或扩展。 因此,无需定义每个BillOLadingController类。

我认为父模块分支中有一个ParentBillOfLadingController基类,  然后每个子模块上的每个BillOfLadingController都从ParentBillOfLadingController扩展。

因此,如果ParentBillOfLadingController更改了业务流程,则所有子项也会更改。 如何执行呢?

我们感谢您的所有答复。 谢谢

0 个答案:

没有答案