Skip to content

Easy laravel cached settings (stored in MYSQL) package with MoonShine/Filament Laravel Admin GUI

License

Notifications You must be signed in to change notification settings

visual-ideas/laravel-site-settings

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Easy laravel cached settings

Easy laravel cached settings (stored in MYSQL) package with MoonShine/Filament Laravel Admin GUI

Latest Version on Packagist Total Downloads

Installation

You can install the package via composer:

composer require visual-ideas/laravel-site-settings

You must run the migrations with:

php artisan migrate

You can publish the config file with:

php artisan vendor:publish --provider="VI\LaravelSiteSettings\LaravelSiteSettingsProvider" --tag="config"

This is the contents of the published config file:

return [
    'cache_key' => env('LSS_CACHE_KEY','laravel_site_settings_data'),
   
    // Set to true if you're using Filament (https://filamentphp.com/)
    'filament' => false,
];

Usage

You can use this package as default laravel config() function!

function settings($key = null, $default = null)
{
    if (is_null($key)) {
        return app('Settings')->all();
    }

    if (is_array($key)) {
        return app('Settings')->set($key);
    }

    return app('Settings')->get($key, $default);
}

or Blade directive @settings

@settings('group.setting')

For PHPStorm you can set this blade directive with This instruction

or as part of native Laravel config()

@config('settings.group.setting')

Not working in console!

Update settings

You can use models VI\LaravelSiteSettings\Models\SettingGroup and VI\LaravelSiteSettings\Models\Setting

or set settings values with the settings() function:

settings(['group.setting' => 'Value']);
settings(['setting' => 'Value']);

Usage with MoonShine Laravel Admin panel

Please see MoonShine

You can use settings in your MoonShine admin panel, like this:

MenuGroup::make('Settings', [
    MenuItem::make(
        'Setting groups',
        new \VI\LaravelSiteSettings\MoonShine\Resources\SettingGroupResource(),
        'heroicons.outline.wrench-screwdriver'
    ),
    MenuItem::make(
        'Settings',
        new \VI\LaravelSiteSettings\MoonShine\Resources\SettingResource(),
        'heroicons.outline.wrench'
    ),
], 'heroicons.outline.cog-8-tooth'),

Usage with Filament Laravel Admin panel

Please see Filament

You can use settings in your Filament admin panel!

Just change config file:

    //...   
    // Set to true if you're using Filament (https://filamentphp.com/)
    'filament' => true,
    //...

Seeding settings

I recommend saving the settings in the seeders using the orangehill/iseed package:

php artisan iseed setting_groups,settings

But you can use seeder or migration to set your settings

settings([
    ['group.setting1' => 'Value1'],
    ['group.setting2' => 'Value2'],
    ['group.setting3' => 'Value3'],
    ['setting1' => 'Value4'],
    ['setting2' => 'Value5'],
    ['setting3' => 'Value6'],
    ['setting4' => 'Value7'],
    ['setting5' => 'Value8']
]);

Credits

License

The MIT License (MIT). Please see License File for more information.