PHPackages                             sergmoro1/yii2-lookup - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. sergmoro1/yii2-lookup

ActiveYii2-extension[Utility &amp; Helpers](/categories/utility)

sergmoro1/yii2-lookup
=====================

Dictionary for seldom changed items.

v1.1.2(6y ago)01372MITPHPPHP &gt;=5.4.0

Since Sep 2Pushed 6y ago1 watchersCompare

[ Source](https://github.com/sergmoro1/yii2-lookup)[ Packagist](https://packagist.org/packages/sergmoro1/yii2-lookup)[ RSS](/packages/sergmoro1-yii2-lookup/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (2)Versions (4)Used By (2)

Yii2 module for lookup enumeration values
=========================================

[](#yii2-module-for-lookup-enumeration-values)

Advantages
----------

[](#advantages)

Fields can has enumeration values. For exaple for a post status:

```
'status' => [
    1 => 'Draft',
    2 => 'Published',
    3 => 'Archived',
]
```

If the number of enumerable values is limited, it is convenient to store them in one table.

Values for modules can be added by migrations or by interface.

Installation
------------

[](#installation)

The preferred way to install this extension is through composer.

Either run

`composer require --prefer-dist sergmoro1/yii2-lookup`

or add

`"sergmoro1/yii2-lookup": "^1.1"`

to the require section of your composer.json.

Run migration `php yii migrate --migrationPath=@vendor/sergmoro1/yii2-lookup/src/migrations`

Usage
-----

[](#usage)

Values for modules can be added by 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);
    }
}
```

or by interface and then place the links in a menu or sidebar.

```
