, (*1)
Yii2 Settings
Yii2 Database settings, (*2)
Installation
The preferred way to install this extension is through composer., (*3)
Either run, (*4)
php composer.phar require --prefer-dist pheme/yii2-settings "*"
or add, (*5)
"pheme/yii2-settings": "*"
to the require section of your composer.json
file., (*6)
Subsequently, run, (*7)
./yii migrate/up --migrationPath=@vendor/pheme/yii2-settings/migrations
in order to create the settings table in your database., (*8)
Usage
There are 2 parts to this extension. A module and a component.
The module provides a simple GUI to edit your settings.
The component provides a way to retrieve and save settings programmatically., (*9)
Add this to your main configuration's modules array, (*10)
'modules' => [
'settings' => [
'class' => 'pheme\settings\Module',
'sourceLanguage' => 'en'
],
...
],
Add this to your main configuration's components array, (*11)
'components' => [
'settings' => [
'class' => 'pheme\settings\components\Settings'
],
...
]
Typical component usage, (*12)
$settings = Yii::$app->settings;
$value = $settings->get('section.key');
$value = $settings->get('key', 'section');
$settings->set('section.key', 'value');
$settings->set('section.key', 'value', null, 'string');
$settings->set('key', 'value', 'section', 'integer');
// Automatically called on set();
$settings->clearCache();
SettingsAction
To use a custom settings form, you can use the included SettingsAction
., (*13)
- Create a model class with your validation rules.
- Create an associated view with an
ActiveForm
containing all the settings you need.
- Add
pheme\settings\SettingsAction
to the controller's actions.
The settings will be stored in section taken from the form name, with the key being the field name., (*14)
Model:, (*15)
class Site extends Model {
public $siteName, $siteDescription;
public function rules()
{
return [
[['siteName', 'siteDescription'], 'string'],
];
}
public function fields()
{
return ['siteName', 'siteDescription'];
}
public function attributes()
{
return ['siteName', 'siteDescription'];
}
}
Views:, (*16)
'site-settings-form']); ?>
= $form->field($model, 'siteName') ?>
= $form->field($model, 'siteDescription') ?>
= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
Controller:, (*17)
function actions(){
return [
//....
'site-settings' => [
'class' => 'pheme\settings\SettingsAction',
'modelClass' => 'app\models\Site',
//'scenario' => 'site', // Change if you want to re-use the model for multiple setting form.
//'section' => 'site', // By default use modelClass formname value
'viewName' => 'site-settings' // The form we need to render
],
//....
];
}