hunter-kaan/yii2-user-storage

简单的用户存储

1.0.1 2018-02-15 10:34 UTC

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 接口并且在加载(保存)时未指定属性,则将保存所有安全属性。
  • 目前,仅支持数据库存储。