taylornetwork/setting

此软件包最新版本(2.1.0)没有提供许可信息。

每个用户的 Laravel 设置管理器

2.1.0 2019-09-03 19:01 UTC

This package is auto-updated.

Last update: 2024-08-29 04:40:19 UTC


README

此软件包提供了一种简单的方法来访问当前登录用户的全局应用设置。

注意:v2 版本中一些功能已更改

  1. 变更
  2. 关于
  3. 安装
  4. 使用方法
  5. HasSettings 特性
  6. 配置
  7. 备用配置
  8. 扩展
  9. 许可

变更

v2.1

  • 增加了对浮点类型值的支持。

v2.0

增加了对应用程序特定设置和用户特定设置的支持。

  • 添加了 AppSetting 模型和外观
  • 添加了 app_setting 辅助函数
  • 添加了 user_setting 辅助函数
  • Setting 模型和外观重命名为 UserSetting
  • 弃用了 setting 辅助函数
  • 将配置密钥 setting_model 重命名为 user_setting_model

如果您使用 setting 辅助函数,它仍然可以工作,但将被删除,因此请使用 user_setting。如果您的代码中仍有 Setting 外观,您可以在 config/app.php 中重命名别名。

'aliases' => [
	...
	'Setting' => TaylorNetwork\Setting\Facades\UserSetting::class,
	...
],

关于

此软件包使用 Laravel 的 auth 函数来访问登录用户,并返回给定键的设置或默认值。类似于 configenv 函数的工作方式。

使用 HasSettings 特性时,可以访问未登录用户的设置。

默认情况下,如果没有设置默认值且找不到设置,则返回 null。如果没有登录用户,也将返回默认值。

它还包括通过 AppSetting 支持应用程序特定设置。

安装

通过 Composer

$ composer require taylornetwork/setting

运行数据库迁移

$ php artisan migrate

您可以选择将 HasSettings 特性添加到您的用户模型中,以直接访问设置。

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;
use TaylorNetwork\Setting\Traits\HasSettings;

class User extends Authenticatable
{
   use HasSettings;
   
   // ...
}

使用方法

注意:UserSettingAppSetting 类扩展了 Illuminate\Database\Eloquent\Model

可用方法

使用类或外观时,所有这些方法都是可用的。

guard($guard) [仅 UserSetting]

这允许您在尝试找到活动用户之前手动设置认证守卫。

UserSetting::guard('api')->get('key', 'defaultValue');

get($key, $default = null) [UserSetting 和 AppSetting]

获取应用程序/登录用户的设置或返回默认值。

UserSetting::get('key');

AppSetting::get('key');

set($key, $value) [UserSetting 和 AppSetting]

为登录用户或应用程序创建或更新设置。

UserSetting::set('someKey', 'someValue');

AppSetting::set('someKey', 'someValue');

UserSetting

use TaylorNetwork\Setting\UserSetting;

$setting = new UserSetting;
$setting->get('someKey', 'defaultValue');

AppSetting

use TaylorNetwork\Setting\AppSetting;

$setting = new AppSetting;
$setting->get('someKey', 'defaultValue');

外观

UserSetting

UserSetting::get('someKey');

UserSetting::set('someKey', 'someValue');

UserSetting::guard('api')->get('someKey', 'Default Value!');

AppSetting

AppSetting::get('someKey');

AppSetting::set('someKey', 'someValue');

辅助函数

user_settingapp_setting 辅助函数是 get 方法的别名。`user_setting` 辅助函数有一个可选的第三个参数,可以传递守卫或守卫列表。

示例

// Returns the user's value or null
user_setting('key');

// Returns the app's value or null
app_setting('key');

// Returns the user's value or 'defaultValue'
user_setting('key', 'defaultValue');

// Returns the app's value or 'defaultValue'
app_setting('key', 'defaultValue');

// Returns the user's value or 'defaultValue' using the 'api' guard
user_setting('key', 'defaultValue', 'api');

// Will try and get a value from each guard in order
// If a value other than the default value is found it will immediately return it.
// If none is found after using all the guards in the array, the default value is returned.
user_setting('key', 'defaultValue', ['web', 'api']);

HasSettings 特性

HasSettings 特性向您的模型添加了一个 settings 关联和以下方法

setting($key, $default = null)

这与上面提到的 get 方法相同 但是 可以用于任何用户,而不仅仅是登录用户。

updateSetting($key, $value)

这将为指定用户创建或更新一个设置。

配置

如果您需要更改默认认证守卫或用户模型,请发布配置。

$ php artisan vendor:publish --provider="TaylorNetwork\Setting\SettingServiceProvider" --tag=config

备用配置

您可以修改 settings 表以满足您的需求,并发布迁移。

$ php artisan vendor:publish --provider="TaylorNetwork\Setting\SettingServiceProvider" --tag=migrations

确保在更改后使用适当的 related_column 更新配置。

扩展

如果您需要额外的功能,可以扩展UserSettingAppSetting模型。

namespace App;

use TaylorNetwork\Setting\UserSetting;

class Setting extends UserSetting
{
	// --
}

请确保使用合适的新的user_setting_modelapp_setting_model更新配置。

许可

MIT许可证(MIT)。更多信息请参阅许可证文件