shurik2k5/yii2-settings

Yii2 数据库设置

安装: 83

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 74

类型:yii2-extension

0.9 2019-10-17 15:27 UTC

This package is auto-updated.

Last update: 2024-09-18 02:08:44 UTC


README

Build Status Total Downloads Scrutinizer Code Quality Code Coverage

Yii2 设置

这是 Yii2 数据库设置的分支 phemellc/yii2-settings,增加了改进和实验性功能。

安装

安装此扩展的首选方式是通过 composer

运行以下命令:

php composer.phar require --prefer-dist shurik2k5/yii2-settings "*"

或添加以下内容到您的 composer.json 文件的 require 部分:

"shurik2k5/yii2-settings": "*"

然后运行以下命令以在数据库中创建设置表:

./yii migrate/up --migrationPath=@vendor/shurik2k5/yii2-settings/migrations

从 phemellc/yii2-settings 迁移

使用此包不需要更改您的应用程序配置。
此包使用与 phemellc/yii2-settings 相同的命名空间,您可以在 composer.json 中简单替换为:

"pheme/yii2-settings": "*"

"shurik2k5/yii2-settings": "*"

然后运行 composer install/update

php composer.phar install

这样就完成了。

使用方法

此扩展包含两个部分:一个模块和一个组件。模块提供了一个简单的图形用户界面来编辑设置。组件提供了以编程方式检索和保存设置的方法。

将此添加到主配置的 modules 数组中

'modules' => [
    'settings' => [
        'class' => 'pheme\settings\Module',
        'sourceLanguage' => 'en'
    ],
    ...
],

将此添加到主配置的 components 数组中

'components' => [
    'settings' => [
        'class' => 'pheme\settings\components\Settings'
    ],
    ...
]

典型的组件使用

$settings = Yii::$app->settings;

$value = $settings->get('section.key');

$value = $settings->get('key', 'section');

$value = $this->setting->getOrSet('key', 'defaultValue', 'section', 'string');

$value = $this->setting->getOrSet('section.key', 'defaultValue');

$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

要使用自定义设置表单,您可以使用包含的 SettingsAction

  1. 创建一个具有验证规则的模型类。
  2. 创建一个相关的视图,其中包含 ActiveForm 和所有需要的设置。
  3. pheme\settings\SettingsAction 添加到控制器的作用域中。

设置将被存储在表单名称中提取的分区,键为字段名称。

模型:

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'];
	}
}

视图:

<?php $form = ActiveForm::begin(['id' => 'site-settings-form']); ?>

<?= $form->field($model, 'siteName') ?>
<?= $form->field($model, 'siteDescription') ?>
<?= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>

<?php ActiveForm::end(); ?>

控制器:

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
            ],
        //....
    ];
}