efureev/yii2-settings

此包已被 废弃 并不再维护。没有建议的替代包。

Yii2 数据库设置

安装: 3

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 74

类型:yii2-extension

0.5 2016-07-24 11:45 UTC

This package is auto-updated.

Last update: 2024-04-29 03:29:43 UTC


README

Yii2 数据库设置

安装

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

可以运行

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

或者添加

"efureev/yii2-settings": "*"

到你的 composer.json 文件的 require 部分。

然后运行

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

以在你的数据库中创建设置表。

使用方法

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

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

	'modules' => [
        'settings' => [
            'class' => 'efureev\settings\Module',
            'sourceLanguage' => 'ru'
        ],
        ...
	],

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

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

典型组件使用

$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

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

  1. 创建一个包含验证规则的模型类。
  2. 创建一个关联的视图,其中包含 ActiveForm 所需的所有设置。
  3. efureev\settings\actions\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') ?>

控制器:

public function actions()
{
   return [
   		....
				'site-settings' => [
        				'class' => 'efureev\settings\actions\SettingsAction',
        				'modelClass' => 'app\models\Site',
        				//'scenario' => 'site',	// Change if you want to re-use the model for multiple setting form.
        				'viewName' => 'site-settings'	// The form we need to render
        		],
        ....
    ];
}