sergmoro1/yii2-lookup

不常变动的项目的字典。

安装次数: 113

依赖项: 2

建议者: 0

安全性: 0

星标: 0

关注者: 3

分支: 0

开放问题: 0

类型:yii2-extension

v1.1.2 2020-04-21 14:22 UTC

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);