【yii】giix工具扩展——自动生成model的属性翻译 推荐
2014-02-18 01:20
525 查看
giix是gii的扩展,方便实用。
GiixModel Generator用来生成model,和gii的Model Generator相比,giix把类拆分成两部分,base类和继承的model类。
base是用工具生成的,方便反复替换,而不会修改具体实现。
继承的类方便大家添加具体实现函数,而不用担心被工具重新替换掉。
好了,这下方便了,但是yii支持本地化操作,数据库的属性每次都需要手工翻译,略显麻烦,那我们就来改下giix的相关代码,让它自动生成对应的语言文件。
修改GiixModelCode.php里generateLabelsEx函数
添加
在
注意:记得保证/protected/messages目录可写
效果,正常执行giix model Generator。然后就可以在messages下面的对应语言里面找到db.php,里面默认生成了对应的内容
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/14/f9e1e9544eaf30537b51b969b39fcd66.jpg)
修改对应的文字即可。
和giix之前生成的_basemodel的差别
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/14/6cdceb5c4ff97e3786cd542bb8b61766.jpg)
GiixModel Generator用来生成model,和gii的Model Generator相比,giix把类拆分成两部分,base类和继承的model类。
base是用工具生成的,方便反复替换,而不会修改具体实现。
继承的类方便大家添加具体实现函数,而不用担心被工具重新替换掉。
好了,这下方便了,但是yii支持本地化操作,数据库的属性每次都需要手工翻译,略显麻烦,那我们就来改下giix的相关代码,让它自动生成对应的语言文件。
修改GiixModelCode.php里generateLabelsEx函数
添加
在
return $labels;前添加
// 保存语言文件 $langDir = Yii::getPathOfAlias('application.messages').DIRECTORY_SEPARATOR.Yii::app()->getLanguage().DIRECTORY_SEPARATOR; if(!file_exists($langDir)) mkdir($langDir); $messageFile = $langDir.'db.php'; if(file_exists($messageFile)) { $messages=include($messageFile); if(!is_array($messages)) $messages=array(); }else{ $messages=array(); } foreach ($table->columns as $column) { if($column->comment) $label=$column->comment; else{ $label = ucwords(trim(strtolower(str_replace(array('-', '_'), ' ', preg_replace('/(?<![A-Z])[A-Z]/', ' \0', $column->name))))); $label = preg_replace('/\s+/', ' ', $label); if (strcasecmp(substr($label, -3), ' id') === 0) $label = substr($label, 0, -3); if ($label === 'Id') $label = 'ID'; } $key = $table->name.'.'.$column->name; if(!array_key_exists($key, $messages)) $messages[$key]=$label; } // 更新数据库翻译文件 $messageFileContent="<?php\n// 数据库数据字典\n\n\n\n"; $messageFileContent.="return array(\n"; foreach ($messages as $key => $value) { $messageFileContent.=" '$key' => '$value',\n"; } $messageFileContent.=');'; file_put_contents($messageFile, $messageFileContent);修改
} else { $label = ucwords(trim(strtolower(str_replace(array('-', '_'), ' ', preg_replace('/(?<![A-Z])[A-Z]/', ' \0', $column->name))))); $label = preg_replace('/\s+/', ' ', $label); if (strcasecmp(substr($label, -3), ' id') === 0) $label = substr($label, 0, -3); if ($label === 'Id') $label = 'ID'; $label = "Yii::t('app', '{$label}')"; }修改为:
} else { // $label = ucwords(trim(strtolower(str_replace(array('-', '_'), ' ', preg_replace('/(?<![A-Z])[A-Z]/', ' \0', $column->name))))); // $label = preg_replace('/\s+/', ' ', $label); // if (strcasecmp(substr($label, -3), ' id') === 0) // $label = substr($label, 0, -3); // if ($label === 'Id') // $label = 'ID'; // $label = "Yii::t('app', '{$label}')"; $label = $table->name.'.'.$column->name; $label = "Yii::t('db', '{$label}')"; }
注意:记得保证/protected/messages目录可写
效果,正常执行giix model Generator。然后就可以在messages下面的对应语言里面找到db.php,里面默认生成了对应的内容
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/14/f9e1e9544eaf30537b51b969b39fcd66.jpg)
修改对应的文字即可。
和giix之前生成的_basemodel的差别
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/14/6cdceb5c4ff97e3786cd542bb8b61766.jpg)
相关文章推荐
- 基于OCILIB的oracle数据库操作总结及自动生成Model和Dao的工具
- 自动生成mybatis的model,mapper,xml工具的使用
- 在线自动生成.9png图的Android设计切图工具推荐
- 实用技巧:利用SQL Server的扩展属性自动生成数据字典
- [翻译][php扩展和嵌入式]第18章-php的扩展自动生成
- Yii2.0-advanced-5—行为的使用(自动生成model时间数据)
- NetScaler/MAS/XAXD自动文档生成工具 推荐
- UML工具推荐 Poseidon版本 可以免费下载,自动生成代码 C++ Java C# VB.NET等 (来自德国汉堡的国际性建模软件开发商Gentleware AG的)
- [实用工具推荐] Graphviz :自动生成系统结构图
- [翻译][php扩展开发和嵌入式]第18章-php的扩展自动生成
- 【原创】文本工具的使用--根据数据库字段快速生成该表对应的Model类属性
- 网站的robots 文件写法 附自动生成工具网址 推荐
- 【mybatis】根据model自动生成 mapper service dao 层的工具类
- SSH开源自动生成代码工具,可自动生成action、service、form、dao、model、vo、sqlmap.xml、.hbm.xml、test等
- Mybatis中使用mybatis-generator结合Ant脚本快速自动生成Model、Mapper等文件 推荐
- 利用SQL Server的扩展属性自动生成数据字典
- yii学习笔记—gii 自动代码生成工具
- utabgen.c linux 多国语言 unicode码表 和 扩展ascll 自动生成工具
- Asp.net mvc 5 CRUD代码自动生成工具- vs.net 2013 Saffolding功能扩展