YII2 自带gii工具,批量生产controllers、 view 和 searchmodel

yii自带的gii很方便,但是使用的时候发现一个很别扭的地方,就是model是可以批量生成的。

只需要配置好数据库的在  Table Name  输入表前缀*即可。

如数据库表名为prefix_table,表前缀为peifix_,那么在table name 输入 prefix_*。

注意Use Table Prefix 选修要勾选

———————————————————————————————————————————————————————

以上是批量生成model的方式,那么在 CRUD Generator  中生成其他文件,发现只能一个个选择,一个个生成对应的crud文件,感觉很是不爽,这个时候,我们可以按以下方式也做一个批处理。

首先找到gii的文件 \vendor\yiisoft\yii2-gii\ 。

首先修改这个目录下的 controllers\DefaultController.php 文件。可以不修改之前的方式添加以下2个函数

public function actionView0($id = "crud")
    {
        $num = 0;
        $modelpath = Yii::getAlias("@common");
        if($handle = opendir($modelpath.'\\models\\')){
            echo "start: <br>";
            while (false !== ($file = readdir($handle))){
                if(strpos($file,'.php')){
                    $fname = str_replace(".php","",$file);
                    echo "$fname<br>";
                    $generator = $this->loadGenerator0($fname);
                    $generator->saveStickyAttributes();
                    $files = $generator->generate();
                    foreach ($files as $file) {
                        echo $file->save();
                        $num++;
                        echo "<br>--------- $num ---------<br>";
                    }
                }
            }
            closedir($handle);
        }

        echo "ok";
    }

    protected function loadGenerator0($name,$id = "crud")
    {
        if (isset($this->module->generators[$id])) {
            $this->generator = $this->module->generators[$id];
            $this->generator->loadStickyAttributes();

            $p = [];
            $p['Generator']['modelClass'] = 'common\\models\\'.$name;
            $p['Generator']['searchModelClass'] = 'common\\searchmodels\\'.$name.'Search';
            $p['Generator']['controllerClass'] = 'backend\\controllers\\'.$name.'Controller';
            $p['Generator']['viewPath'] = '';
            $p['Generator']['baseControllerClass'] = 'yii\\web\\Controller';
            $p['Generator']['indexWidgetType'] = 'grid';
            $p['Generator']['enableI18N'] = 0;
            $p['Generator']['enablePjax'] = 0;
            $p['Generator']['messageCategory'] = 'app';
            $p['Generator']['template'] = 'default';

            $this->generator->load($p);

            return $this->generator;
        } else {
            throw new NotFoundHttpException("Code generator not found: $id");
        }
    }

我这边生成的searchmodel文件在common\searchmodels\目录下,可以按自己需求不同更改目录

默认生成路径为 r=gii/default/view&id=crud。

安装添加的方式只需要访问r=gii/default/view0 即可自动生成全部model的对应crud文件


另外想批量修改英文为中文的,只需要找到\vendor\yiisoft\yii2-gii\generators\crud\default 目录,里面是对应的文件模板,找到里面所有英文,修改问中文即可,还可以添加一些自定义的函数之类的。注意:这一步要在生成所有crud文件之前做哦。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值