padosoft/laravel-settings
最新稳定版本:6.5.2
Composer 安装命令:
composer require padosoft/laravel-settings
包简介
Persistent settings with caching in Laravel.
README 文档
README
Persistent on database, fast in memory, application-wide settings for Laravel.
Performance are not invalidated because settings are automatic cached when retrived from database. Da completare docs.
Requirements
PHP >= 7.1.3
Laravel 5.8.*|6.*|7.*|8.*|9.*|10.* (For Laravel framework 5.6.* or 5.7.* please use v1.*)
Installation
composer require padosoft/laravel-settings- Publish the config and migration files by running
php artisan vendor:publish --provider="Padosoft\Laravel\Settings\ServiceProvider". - Run
php artisan migrate
Before running the migrations be sure you have in your AppServiceProviders.php the following lines:
use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); }
Installation - Laravel < 5.5
- Add
Padosoft\Laravel\Settings\ServiceProviderto the array of providers inconfig/app.php. - Add
'SettingsManager' => 'Padosoft\Laravel\Settings\Facade'to the array of aliases inconfig/app.php.
Usage
You can either access the setting store via its facade or inject it by type-hinting towards the abstract class 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 ?>
Call Setting::store() explicitly to save changes made.
You could also use the setting() helper:
// 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');
Using in other packages
If you want to use settings manager on other packages you must provide migrations to populate settings table. For Example:
<?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() { } }
Please take care of populate config_override column with config key you want your setting should override ##Add new type of settings with cast and Validation in Config/config.php
/* |-------------------------------------------------------------------------- | 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)/'], ],
Events Listening
Every time a model is created,updated or deleted an event will be dispatched. You can listen these events with a simple Listener in 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']); }
Contact
Open an issue on GitHub if you have any problems or suggestions.
License
The contents of this repository is released under the MIT license.
统计信息
- 总下载量: 11.73k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 5
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-05-14