padosoft / laravel-settings
Laravel 中具有缓存的持久化设置。
6.3.0
2024-07-05 12:01 UTC
Requires
- php: >=7.4
- illuminate/contracts: >=5.8|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/database: >=5.8|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/encryption: >=5.8|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/validation: >=5.8|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- josiasmontag/laravel-redis-mock: ^1.3
- mockery/mockery: ^1.5
- orchestra/testbench: ^3.8.2|^4.0|^5.0|^6.0|^7.0|^8.0|^9.0
- roave/security-advisories: dev-latest
- dev-master
- 6.3.0
- 6.2.2
- 6.2.1
- 6.2.0
- 6.1.2
- 6.1.1
- 6.1.0
- 6.0.0
- 5.5.4
- 5.5.3
- 5.5.2
- 5.5.1
- 5.5.0
- 5.4.5
- 5.4.3
- 5.4.2
- 5.4.1
- 5.4.0
- 5.3.0
- 5.2.0
- 5.1.5
- 5.1.4
- 5.1.3
- 5.1.2
- 5.1.1
- 5.1.0
- 5.0.10
- 5.0.9
- 5.0.8
- 5.0.7
- 5.0.6
- 5.0.5
- 5.0.4
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- 4.0.0
- 3.4.1
- 3.4.0
- 3.3.0
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.0
- 3.0.0
- 2.0.1
- 2.0.0
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.7
- 1.0.6
- dev-develop
- dev-feature/recognizeForMigration
- dev-release/5.0.6
- dev-feature/mixValidationRules
- dev-release/5.0.5
- dev-feature/recalculateOldValidationRules/Rebase
- dev-feature/migrationOldData
- dev-feature/dynamicCast
- dev-feature/validation
- dev-circleci-project-setup
This package is auto-updated.
Last update: 2024-09-05 12:18:08 UTC
README
数据库持久化,内存中快速,Laravel 全局设置。
由于从数据库检索时设置会自动缓存,因此性能不会因设置而失效。待完成文档。
要求
PHP >= 7.1.3
Laravel 5.8.*|6.*|7.*|8.*|9.*|10.* (For Laravel framework 5.6.* or 5.7.* please use v1.*)
安装
composer require padosoft/laravel-settings
- 运行
php artisan vendor:publish --provider="Padosoft\Laravel\Settings\ServiceProvider"
发布配置和迁移文件。 - 运行
php artisan migrate
在运行迁移之前,请确保在您的 AppServiceProviders.php
中有以下行
use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); }
安装 - Laravel < 5.5
- 将
Padosoft\Laravel\Settings\ServiceProvider
添加到config/app.php
中的提供者数组中。 - 将
'SettingsManager' => 'Padosoft\Laravel\Settings\Facade'
添加到config/app.php
中的别名数组中。
用法
您可以通过其外观或通过类型提示抽象类 anlutro\LaravelSettings\SettingStore
注入来访问设置存储。
<?php SettingsManager::get('foo', 'default value'); SettingsManager::get('foo', 'default value',false,true); //Get cast value without validation SettingsManager::get('foo', 'default value',false,false); //Get raw value SettingsManager::get('foo', 'default value',true,false); //Get validated value without cast SettingsManager::set('set', 'value');//valid for current session SettingsManager::set('set', 'value','validationRule');//with validation rule valid for current session SettingsManager::store();//persist settings value on db SettingsManager::setAndStore('set', 'value','validationRule');//persisted on database ?>
显式调用 Setting::store()
以保存所做的更改。
您还可以使用 setting()
助手函数
// Get the store instance settings(); // Get values settings('foo'); settings('foo', 'default value',true,false);//Get cast value without validation settingsRaw('foo', 'default value');//Get raw value settingsAsString('foo', 'default value');//Get value as a String Validated settings('foo', 'default value',false,true);//Get raw value settings('foo', 'default value',false,false);//Get validated value without cast settings('foo', 'default value',); settings()->get('foo');
在其他包中使用
如果您想在其他包中使用设置管理器,您必须提供迁移以填充设置表。例如
<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; use Illuminate\Support\Facades\DB; class PopulateSettings extends Migration { /** * Run the migrations. * * @return void */ public function up() { if (config('padosoft-settings.enabled',false)) { DB::table('settings')->insert([ //LOGIN ['key'=>'login.remember_me', 'value'=>'1','descr'=>'Enable/Disable remeber me feature','config_override'=>'padosoft-users.login.remember-me','validation_rules'=>'boolean','editable'=>1,'load_on_startup'=>0], ['key'=>'login.login_reset_token_lifetime', 'value'=>'30','descr'=>'Number of minutes reset token lasts','config_override'=>'auth.expire','validation_rules'=>'numeric','editable'=>1,'load_on_startup'=>0], ]); } } /** * Reverse the migrations. * * @return void */ public function down() { } }
请确保将 config_override 列填充为要覆盖的配置键值,以使设置生效
/* |-------------------------------------------------------------------------- | Larvel Settings Manager |-------------------------------------------------------------------------- | | This option controls if the settings manager is enabled. | This option should not be is overwritten here but using settings db table | | | | */ 'enabled' => true, 'encrypted_keys' => [], 'cast' => [ //Example new cast and validation //class = class for cast //method = method for cast //validate = rule for validation 'boolean' => ['class' => \Padosoft\Laravel\Settings\CastSettings::class, 'method' => 'boolean', 'validate' => 'boolean'], 'listPipe' => ['class' => \App\Casts\ListPipeCast::class, 'validate' => 'regex:/(^[0-9|]+$)|(^.{0}$)/'], 'booleanString' => ['class' => \App\Casts\BooleanString::class,'validate' => 'regex:/^(true|false)/'], 'booleanInt' => ['class' => \App\Casts\BooleanInt::class,'validate' => 'regex:/^(0|1)/'], ],
事件监听
每次创建、更新或删除模型时,都会分发一个事件。您可以使用 Laravel 的简单监听器来监听这些事件
public function subscribe(Dispatcher $events): void { $events->listen(\Padosoft\Laravel\Settings\Events\SettingCreated::class, [SettingsEventSubscriber::class, 'handleSettingCreated']); $events->listen(\Padosoft\Laravel\Settings\Events\SettingUpdated::class, [SettingsEventSubscriber::class, 'handleSettingUpdated']); $events->listen(\Padosoft\Laravel\Settings\Events\SettingDeleted::class, [SettingsEventSubscriber::class, 'handleSettingDeleted']); }
联系方式
如果您有任何问题或建议,请在 GitHub 上提交问题。
许可证
此存储库的内容在 MIT 许可证 下发布。