我们在很多系统中,往往需要维护很多字典项目,一般的字典项目包含有一个大类名称、字典项目名称、字典值、等字段,这些内容往往大同小异, 如在车辆管理中,我们可能需要维护:车辆类型、车辆品牌、车辆用途、路途类别、用车评价、车辆状态等等信息,这些是很简单的数据, 用来给业务功能使用的,是一个下拉列表形的数据,如果我们为每个这样的简单类型都创建一个表的话,那么有以下坏处:
-
如果业务模块很多,就会产生很多这样的表,看起来不雅,维护也不方便,增加工作量。
-
会产生很多页面代码(你需要维护界面内容展示和录入),也是看起来不雅,不方便维护,增加工作量。
-
代码中调用处理也不好,记不住哪个是具体的字典信息了,太多。
以上总结一句话,就是做重复工作,就算有一键生成代码的工具,也是不好的。
如果采用一个公用的字典管理模块能够解决以上问题,那么整个世界就清净了,一句话,简单。 本扩展能为你解决以上问题。
————————————————————————————————————————————————
1.推荐通过使用composer.安装此扩展,一切将自动完成
php composer.phar require ciniran/yii2-dic "*"
1.下载模块源码并解压缩到你期望的目录,如:
vendor/ciniran/yii2-dic
2.在 config/main.php
添加如下配置,启用字典管理模块,请注意一定要加入别名,不然可能访问不到
'modules' => [
'dic' => [
'class' => 'ciniran\dic\Module',
],
],
'aliases' => [
'@ciniran/dic' => '@vendor/ciniran/yii2-dic'
],
3.在公共配置文件中启用系统组件,按如下配置,您就可以使用 Yii::$app->dic->getKey('base_status');取值了
'components' => [
'dic'=>[
'class'=>'\ciniran\dic\components\DicTools',
],
]
4.程序会自动检测并创建一个 system_dic 的数据表。
5.本程序支持多语言配置, 多语言配置文件位@vendor/ciniran/yii2-dic/message/ 目录之下 ————————————————————————————————————————————————————————
1. 在你的后台访问 http://yourdomain/dic,可以进行数据库的字典配置
<?php echo GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'id',
'value',
'name',
[
'attribute' => 'status',
'filter'=>Yii::$app->dic->getKey(base_status),
'value' => function ($model) {
return Yii::$app->dic->getText('do_status', $model->status);
}
],
]
?>
SysDic::cleanSystemDic();
$array = Yii::$app->dic->getAllKeys(); //通过缓存取得
$array = Yii::$app->dic->getAllKeys(false); //不通过缓存取得
$array =Yii::$app->dic->getKey('base_status'); //通过缓存取得
$array =Yii::$app->dic->getKey('base_status',true); //获得已被禁用的项目
$string = Yii::$app->dic->getText('base_status','1');
$value = Yii::$app->dic->getCode('base_status','是');
$value = SysDic::getCode('base_status', '是');