sergey-lisitsyn/yii2-key-value-settings-storage

Storage in database for persist, retrieve and manage system settings for web application

0.0.11 2021-01-05 12:18 UTC

This package is auto-updated.

Last update: 2024-09-05 20:22:12 UTC


README

Storage in database for persist, retrieve and manage system settings for web application

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist sergey-lisitsyn/yii2-key-value-settings-storage "*"

or add

"sergey-lisitsyn/yii2-key-value-settings-storage": "*"

to the require section of your composer.json file.

Add migration path to migrationNamespaces section in main config file.

    ......
    'controllerMap' => [
        'migrate' => [
            'class' => 'yii\console\controllers\MigrateController',
            'migrationNamespaces' => [
                ...
                'sergeylisitsyn\settingsStorage\migrations',
            ],
        ],
    ]
    ......

Add to components:

    ......
    'components' => [
        'settingsStorage' => [
            'class' => 'sergeylisitsyn\settingsStorage\SystemSetting',
            'storage' => 'sergeylisitsyn\settingsStorage\models\SettingStorage',
            'formatters' => [
                'string' => 'sergeylisitsyn\settingsStorage\models\formatters\StringStorageFormatter',
                'number' => 'sergeylisitsyn\settingsStorage\models\formatters\NumberStorageFormatter',
                'bool' => 'sergeylisitsyn\settingsStorage\models\formatters\BooleanStorageFormatter',
                'array' => 'sergeylisitsyn\settingsStorage\models\formatters\ArrayStorageFormatter'
            ],
        ],
    ]
    ......

And to bootstrap:

	'bootstrap' => [
		...
		'settingsStorage'
	],

To access the module, you need to add this to your application configuration:

    ......
    'modules' => [
        'settings-storage' => [
            'class' => 'sergeylisitsyn\settingsStorage\Module',
        ],
    ],
    ......

Usage

Once the extension is installed, simply use it in your code to create and persist property in storage :

    $foo = Yii::$app->settingsStorage::create('foo', SystemSetting::TYPE_STRING, 'bar', 'xyz', 'test');
    $foo->save();
    // or just
    $saved = Yii::$app->settingsStorage->put('foo', SystemSetting::TYPE_STRING, 'bar', 'xyz', 'test');

Getting and setting value into storage :

    $fooVal = Yii::$app->settingsStorage->getValue('foo');
    echo($fooVal); // bar
    Yii::$app->settingsStorage->set('foo', 'baz');
    $fooVal = Yii::$app->settingsStorage->getValue('foo');
    echo($fooVal); // baz

Or just retrieve value by the name :

    Yii::$app->settingsStorage->getValue('foo');

Or only set with name and value :

    Yii::$app->settingsStorage->set('foo', 'baz');

Change setting type by name :

    Yii::$app->settingsStorage->setType('foo', SystemSetting::TYPE_NUMBER);
    Yii::$app->settingsStorage->set('foo', 1000000);

or change all properties by the edit method :

    $foo = Yii::$app->settingsStorage->get('foo');
    $foo->edit('foo', SystemSetting::TYPE_STRING, 'baz', 'zyx', 'another description');
    $foo->save();
    // or just
    Yii::$app->settingsStorage->update('foo', SystemSetting::TYPE_STRING, 'baz', 'zyx', 'another description');

X11 License.