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文件之前做哦。