【yii】giix工具扩展——自动生成model的属性翻译-创新互联

giix是gii的扩展,方便实用。

成都创新互联公司是一家集网站建设,崂山企业网站建设,崂山品牌网站建设,网站定制,崂山网站建设报价,网络营销,网络优化,崂山网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

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('/(?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=" $value) { $messageFileContent.=" '$key' => '$value',\n"; } $messageFileContent.=');'; file_put_contents($messageFile, $messageFileContent);
  • 修改

} else { $label = ucwords(trim(strtolower(str_replace(array('-', '_'), ' ', preg_replace('/(?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('/(?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,里面默认生成了对应的内容

【yii】giix工具扩展——自动生成model的属性翻译

修改对应的文字即可。

和giix之前生成的_basemodel的差别

【yii】giix工具扩展——自动生成model的属性翻译

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站标题:【yii】giix工具扩展——自动生成model的属性翻译-创新互联
链接地址:http://ybzwz.com/article/cepdch.html