yiier / yii2-user-setting

Yii2的用户设置

安装次数: 1,924

依赖: 1

建议者: 0

安全: 0

星标: 2

关注者: 4

分支: 0

开放问题: 0

类型:yii2-extension

v0.2.2 2022-01-28 02:49 UTC

This package is auto-updated.

Last update: 2024-08-28 08:06:15 UTC


README

Yii2的用户设置

Latest Stable Version Total Downloads Latest Unstable Version License

安装

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

运行以下命令之一

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

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

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

配置

数据库迁移

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

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

模块设置

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

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

组件设置

要使用设置组件,您需要配置应用程序配置中的组件数组

'components' => [
    'userSetting' => [
        'class' => 'yiier\userSetting\UserSetting',
    ],
],

使用方法

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

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

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

$setting->set('key', false, 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', Yii::$app->user->id);

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

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

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

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

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

$setting->invalidateCache(Yii::$app->user->id); // automatically called on set(), remove();

UserSettingAction

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

  1. 创建一个包含验证规则的模型类。
  2. 创建一个包含所有所需设置的 ActiveForm 的相关视图。
  3. yiier\userSetting\UserSettingAction 添加到控制器的操作中。

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

模型

<?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' => UserSettingAction::class,
                'modelClass' => 'app\models\SiteForm',
                //'scenario' => 'site',	// Change if you want to re-use the model for multiple setting form.
                //'userId' => 0', // By default use \Yii::$app->user->id
                'viewName' => 'site-settings',	// The form we need to render
                'successMessage' => '保存成功'
            ],
        //....
    ];
}

参考