https://github.com/padosoft/laravel-settings
Persistent settings with caching in Laravel
https://github.com/padosoft/laravel-settings
laravel laravel-package settings
Last synced: about 1 year ago
JSON representation
Persistent settings with caching in Laravel
- Host: GitHub
- URL: https://github.com/padosoft/laravel-settings
- Owner: padosoft
- License: mit
- Created: 2018-05-14T13:18:24.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2025-04-15T08:44:35.000Z (about 1 year ago)
- Last Synced: 2025-04-15T08:48:46.037Z (about 1 year ago)
- Topics: laravel, laravel-package, settings
- Language: PHP
- Size: 347 KB
- Stars: 5
- Watchers: 3
- Forks: 1
- Open Issues: 4
-
Metadata Files:
- Readme: readme.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Laravel Settings
[](http://opensource.org/licenses/MIT)
[](https://circleci.com/gh/padosoft/laravel-settings)
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
1. `composer require padosoft/laravel-settings`
2. Publish the config and migration files by running `php artisan vendor:publish --provider="Padosoft\Laravel\Settings\ServiceProvider"`.
3. Run `php artisan migrate`
**Before running the migrations be sure you have in your `AppServiceProviders.php` the following lines:**
```php
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
```
## Installation - Laravel < 5.5
4. Add `Padosoft\Laravel\Settings\ServiceProvider` to the array of providers in `config/app.php`.
5. Add `'SettingsManager' => 'Padosoft\Laravel\Settings\Facade'` to the array of aliases in `config/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
```
Call `Setting::store()` explicitly to save changes made.
You could also use the `setting()` helper:
```php
// 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
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
```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
```php
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](http://opensource.org/licenses/MIT).