Laravel 5.4.x persistent settings using JSON cache file
-
Require this package with composer :
composer require oriceon/laravel-settings
-
Register the ServiceProvider to the
providers
array inconfig/app.php
Oriceon\Settings\SettingsServiceProvider::class,
-
Add an alias for the facade to
aliases
array in yourconfig/app.php
'Settings' => Oriceon\Settings\Facades\Settings::class,
-
Publish the config and migration files now:
php artisan vendor:publish --provider="Oriceon\Settings\SettingsServiceProvider" --force
Change config/settings.php
according to your needs.
Create the settings
table.
php artisan migrate
Settings::set('key', 'value');
Settings::set('key1.key2', 'value');
$value = Settings::get('key');
$value = Settings::get('key1.key2');
$value = Settings::get('key', 'Default Value');
$values = Settings::getAll();
Note: default, all settings are loaded from cache. If you want to load them from database with this method just call with a parameter:
$values = Settings::getAll($cache = false);
Note: If key is not found (null) in cache or settings table, it will return default value
$value = Settings::has('key');
$value = Settings::has('key1.key2');
Settings::forget('key');
Settings::forget('key1.key2');
Settings::clean();
Settings::clean(['flush' => true]);
Note: using flush parameter, will forget all values and reload settings from config file
Settings::flush();
// Change your config/settings.php
'fallback' => true
/*
* If the value with key => mail.host is not found in cache or DB of Larave Settings
* it will return same value as config::get('mail.host');
*/
Settings::get('mail.host');
// Change your config/settings.php
'primary_config_file' => 'filename'
Note: If you want to have a site config file with all your default settings, create a file in config/ with desired name and create your config file as you want. After that, you may no longer need to enter the file name in setting calls.
Instead Settings::get('filename.setting_key') you will just call for Settings::get('setting_key')
Note: It will work if default value in laravel setting is not set
$value = settings('key');
$value = settings('key', 'default value');
Fwork package : ABENEVAUT/laravel-settings
Original package : efriandika/laravel-settings