yiier/yii2-target-setting

为 Yii2 的目标设置

安装: 366

依赖者: 0

建议者: 0

安全: 0

星标: 2

关注者: 4

分支: 1

开放问题: 0

类型:yii2-extension

v0.1.3 2021-01-18 03:40 UTC

This package is auto-updated.

Last update: 2024-09-17 14:23:10 UTC


README

为 Yii2 的目标设置

Latest Stable Version Total Downloads Latest Unstable Version License

安装

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

运行以下命令之一

php composer.phar require --prefer-dist yiier/yii2-target-setting "*"

或者在您的 composer.json 文件的 require 部分添加

"yiier/yii2-target-setting": "*"

到 require 部分。

配置

数据库迁移

在使用此扩展之前,我们还需要准备数据库。

php yii migrate --migrationPath=@yiier/targetSetting/migrations/

模块设置

要访问模块,您需要在应用程序配置中配置 modules 数组

'modules' => [
    'targetSetting' => [
        'class' => 'yiier\targetSetting\Module',
    ],
],

组件设置

要使用 Setting 组件,您需要在应用程序配置中配置 components 数组

'components' => [
    'targetSetting' => [
        'class' => 'yiier\targetSetting\TargetSetting',
    ],
],

使用方法

<?php
$setting = Yii::$app->targetSetting;

$value = $setting->get('key');
$value = $setting->get('key', User::tableName(), Yii::$app->user->id);

$setting->set('key', 125.5);
$setting->set('key', 125.5, User::tableName(), Yii::$app->user->id);

$setting->set('key', false, User::tableName(), Yii::$app->user->id, 'Not allowed Update Post');
$setting->set('key', false, '', 0, 'Not allowed Update Post');

// Checking existence of setting
$setting->has('key');
$setting->has('key', User::tableName(), Yii::$app->user->id);

// Activates a setting
$setting->activate('key');
$setting->activate('key', User::tableName(), Yii::$app->user->id);

// Deactivates a setting
$setting->deactivate('key');
$setting->deactivate('key', User::tableName(), Yii::$app->user->id);

// Removes a setting
$setting->remove('key');
$setting->remove('key', User::tableName(), Yii::$app->user->id);

// Removes all settings
$setting->removeAll();
$setting->removeAll(User::tableName(), Yii::$app->user->id);

// Get's all values in the specific section.
$setting->getAllByTarget(User::tableName(),Yii::$app->user->id);

$setting->invalidateCache(); // automatically called on set(), remove();
$setting->invalidateCache(User::tableName()); // automatically called on set(), remove();

TargetSettingAction

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

  1. 创建一个包含验证规则的模型类。
  2. 创建一个包含所有所需设置的 ActiveForm 的关联视图。
  3. yiier\targetSetting\targetSettingAction 添加到控制器的作用域。

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

模型

<?php
class SiteForm extends Model
{

    public $siteName, $siteDescription;

    public function rules()
    {
        return [
            [['siteName', 'siteDescription'], 'string'],
        ];
    }

    public function fields()
    {
        return ['siteName', 'siteDescription'];
    }

    public function attributes()
    {
        return ['siteName', 'siteDescription'];
    }

    public function attributeLabels()
    {
        return [
            'siteName' => 'Site Name',
            'siteDescription' => 'Site Description'
        ];
    }

}

视图

<?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(); ?>

控制器

public function actions() 
{
   return [
   		//....
            'site-settings' => [
                'class' => TargetSettingAction::class,
                'modelClass' => 'app\models\SiteForm',
                //'scenario' => 'site',	// Change if you want to re-use the model for multiple setting form.
                //'targetType' => 'company', // By default use ''
                //'targetId' => 1, // By default use \Yii::$app->user->id
                'viewName' => 'site-settings',	// The form we need to render
                'successMessage' => '保存成功'
            ],
        //....
    ];
}

参考