sergmoro1 / yii2-lookup
不常变动的项目的字典。
v1.1.2
2020-04-21 14:22 UTC
Requires
- php: >=5.4.0
- sergmoro1/yii2-modal-crud: ^1.0
- yiisoft/yii2: *
This package is auto-updated.
Last update: 2024-09-22 00:23:15 UTC
README
优点
字段可以具有枚举值。例如,对于帖子状态
'status' => [ 1 => 'Draft', 2 => 'Published', 3 => 'Archived', ]
如果枚举值的数量有限,将它们存储在一个表中是很方便的。
可以通过迁移或接口添加模块的值。
安装
安装此扩展的首选方式是通过composer。
运行以下命令之一:
composer require --prefer-dist sergmoro1/yii2-lookup
或者
"sergmoro1/yii2-lookup": "^1.1"
添加到您的composer.json文件的require部分。
运行迁移 php yii migrate --migrationPath=@vendor/sergmoro1/yii2-lookup/src/migrations
使用方法
可以通过迁移或通过接口添加模块的值
use yii\db\Migration; class m180116_073828_lookup_fill extends Migration { const TABLE_LOOKUP = '{{%lookup}}'; const TABLE_PROPERTY = '{{%property}}'; const USER_ROLE = 1; const USER_STATUS = 2; public function safeUp() { $this->insert(self::TABLE_PROPERTY, ['id' => self::USER_ROLE, 'name' => 'UserRole']); $this->insert(self::TABLE_LOOKUP, ['name' => 'Admin', 'code' => 1, 'property_id' => self::USER_ROLE, 'position' => 1]); $this->insert(self::TABLE_LOOKUP, ['name' => 'Author', 'code' => 2, 'property_id' => self::USER_ROLE, 'position' => 2]); $this->insert(self::TABLE_LOOKUP, ['name' => 'Commentator', 'code' => 3, 'property_id' => self::USER_ROLE, 'position' => 3]); $this->insert(self::TABLE_PROPERTY, ['id' => self::USER_STATUS, 'name' => 'UserStatus']); $this->insert(self::TABLE_LOOKUP, ['name' => 'Active', 'code' => 1, 'property_id' => self::USER_STATUS, 'position' => 1]); $this->insert(self::TABLE_LOOKUP, ['name' => 'Archive', 'code' => 2, 'property_id' => self::USER_STATUS, 'position' => 2]); } public function safeDown() { $this->delete(self::TABLE_LOOKUP, 'property_id=' . self::USER_ROLE); $this->delete(self::TABLE_LOOKUP, 'property_id=' . self::USER_STATUS); $this->delete(self::TABLE_PROPERTY, self::USER_ROLE); $this->delete(self::TABLE_PROPERTY, self::USER_STATUS); } }
然后将链接放置在菜单或侧边栏中。
<?= Html::a('Properties', ['lookup/property/index']) ?> <?= Html::a('Property\'s values', ['lookup/lookup/index']) ?>
通过属性获取所有项。
<?= GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'layout' => "{items}\n{summary}\n{pager}", 'columns' => [ 'username', 'email', [ 'attribute' => 'status', 'filter' => Lookup::items('UserStatus'), 'value' => function($data) { return Lookup::item('UserStatus', $data->status); } ],
获取具体项的名称。
Lookup::item('PostStatus', $data->status);