hunter-kaan / yii2-user-storage
简单的用户存储
1.0.1
2018-02-15 10:34 UTC
Requires
- yiisoft/yii2: ~2.0.0
This package is not auto-updated.
Last update: 2024-09-29 05:08:10 UTC
README
简单的用户设置、选项等存储
安装
安装此扩展的首选方式是通过 composer。
运行以下命令之一
php composer.phar require --prefer-dist hunter-kaan/yii2-user-storage "^1.0"
或在您的 composer.json
文件的 require 部分添加
"hunter-kaan/yii2-user-storage": "^1.0"
。
配置
要使用此扩展,您必须配置应用程序配置中的 Storage
类
return [ //.... 'components' => [ 'userStorage' => [ 'class' => HunterKaan\UserStorage\Storage::class, 'keyPrefix' => '', 'userStorageTable' => '{{%user_storage}}', 'userTable' => '{{%user}}', ], ] //.... ];
在继续之前,您需要在数据库中创建这些表。为此,您可以使用存储在 @vendor/hunter-kaan/yii2-user-storage/migrations
中的迁移
php yii migrate/up --migrationPath=@vendor/hunter-kaan/yii2-user-storage/migrations
该组件扩展了 yii\caching\Cache
类。
典型用法如下
// To get default form values. $formDefaultValues = Yii::$app->userStorage->get('myForm-default-values'); // To store user choose as default form values. $formDefaultValues = ['city_id' => 3]; Yii::$app->userStorage->set('myForm-options', $formDefaultValues);
示例
模型服务
存储和加载模型数据
在您的控制器中
$model = new Post(); $model->loadDefaultValues(); // Create model service $storageService = Yii::$app->userStorage->buildModelService($model); // Load data from user storage to model $storageService->load(); // ... if ($model->load(Yii::$app->getRequest()->getBodyParam()) && $model->save()) { // Save user data to storage $storageService->save(); // ... }
模型必须实现接口 HunterKaan\UserStorage\UserStorageModelInterface
class Post extends ActiveRecord implements UserStorageModelInterface { // ... /** * Storage safe attributes. * * @return array */ public function userStorageAttributes() { return ['pinned']; } // ...
或加载(保存)时必须指定安全属性
// Create model service $storageService = Yii::$app->userStorage->buildModelService($model); // Load data from user storage to model $storageService->load(null, ['pinned']); // ... if ($model->load(Yii::$app->getRequest()->getBodyParam()) && $model->save()) { // Save user data to storage $storageService->save(null, ['pinned']); // ... }
默认模型存储键为 YourModel::class
,但可以重新定义
// Create model service $storageService = Yii::$app->userStorage->buildModelService($model); // Load data from user storage to model $storageService->load(CommonModel::class); // ... if ($model->load(Yii::$app->getRequest()->getBodyParam()) && $model->save()) { // Save user data to storage $storageService->save(CommonModel::class); // ... }
注意
- 只能保存安全属性。 请参阅模型指南。
- 如果模型未实现
UserStorageModelInterface
接口并且在加载(保存)时未指定属性,则将保存所有安全属性。 - 目前,仅支持数据库存储。