yiier / yii2-user-setting
Yii2的用户设置
v0.2.2
2022-01-28 02:49 UTC
Requires
- yiisoft/yii2: ~2.0.0
README
Yii2的用户设置
安装
安装此扩展的首选方式是通过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
。
- 创建一个包含验证规则的模型类。
- 创建一个包含所有所需设置的
ActiveForm
的相关视图。 - 将
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' => '保存成功' ], //.... ]; }