taylornetwork / setting
每个用户的 Laravel 设置管理器
Requires
- php: >=7.1
- illuminate/auth: >=5.5
- illuminate/support: >=5.5
Requires (Dev)
- orchestra/testbench: ^3.8
README
此软件包提供了一种简单的方法来访问当前登录用户的全局应用设置。
注意:v2 版本中一些功能已更改
变更
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
函数来访问登录用户,并返回给定键的设置或默认值。类似于 config
和 env
函数的工作方式。
使用 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; // ... }
使用方法
注意:UserSetting
和 AppSetting
类扩展了 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_setting
和 app_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
更新配置。
扩展
如果您需要额外的功能,可以扩展UserSetting
和AppSetting
模型。
namespace App; use TaylorNetwork\Setting\UserSetting; class Setting extends UserSetting { // -- }
请确保使用合适的新的user_setting_model
或app_setting_model
更新配置。
许可
MIT许可证(MIT)。更多信息请参阅许可证文件。