PHP code example of gsebastiao / laravel-settings

1. Go to this page and download the library: Download gsebastiao/laravel-settings library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

gsebastiao / laravel-settings example snippets


Settings::set('app.name', 'Loja do Zé');

setting('app.name'); // 'Loja do Zé'

use Gsebastiao\LaravelSettings\Facades\Settings;

Settings::set('app.name', 'Loja do Zé');

Settings::get('app.name');                // 'Loja do Zé'
Settings::get('app.slogan', 'Bem-vindo'); // 'Bem-vindo' — não existe, devolve o valor por defeito

Settings::has('app.name');    // true
Settings::forget('app.name'); // apaga

Settings::set('mail.from_name', 'Loja do Zé');
Settings::set('mail.from_address', '[email protected]');

Settings::all('mail'); // ['from_address' => '[email protected]', 'from_name' => 'Loja do Zé']

// database/seeders/SettingsSeeder.php
public function run(): void
{
    Settings::set('app.name', 'Loja do Zé');
    Settings::set('app.items_per_page', 20);
}

'app.name'           // grupo 'app',  nome 'name'
'mail.from_address'  // grupo 'mail', nome 'from_address'
'ui.theme'           // grupo 'ui',   nome 'theme'

Settings::set('ui.font_size', 14);                  // é um inteiro
Settings::set('ui.font_size', $request->font_size); // '16' → guarda 16, continua inteiro

Settings::set('ui.font_size', $request->font_size, cast: 'int');

Settings::forUser($user)->set('ui.theme', 'dark');

Settings::forUser($user)->get('ui.theme', 'light'); // 'dark'

Settings::set('ui.theme', 'light');               // valor geral
Settings::forUser($ana)->set('ui.theme', 'dark'); // só a Ana

Settings::forUser($ana)->get('ui.theme');   // 'dark'
Settings::forUser($bruno)->get('ui.theme'); // 'light' ← usa o valor geral

use Gsebastiao\LaravelSettings\Facades\Settings;

class PreferencesController extends Controller
{
    public function edit(Request $request)
    {
        $prefs = Settings::forUser($request->user());

        return view('preferences', [
            'theme'    => $prefs->get('ui.theme', 'light'),
            'fontSize' => $prefs->get('ui.font_size', 14),
        ]);
    }

    public function update(Request $request)
    {
        $data = $request->validate([
            'theme'     => '

Settings::forgetContext(Settings::userContext($user));

Settings::set('app.currency', 'MZN');
Settings::lock('app.currency');

Settings::forUser($user)->get('app.currency');        // 'MZN' — mesmo que tenha outro valor
Settings::forUser($user)->set('app.currency', 'USD'); // erro: SettingLockedException

use Gsebastiao\LaravelSettings\Contracts\SettingsRepository;

public function __construct(private SettingsRepository $settings) {}

$this->settings->get('app.name');

Settings::set('ui.logo', 'logos/default.png');                  // geral
Settings::forTenant($company)->set('ui.logo', 'logos/acme.png'); // cliente ACME

Settings::forUser($user, tenant: $user->company_id)->get('ui.logo');
// procura: utilizador → tenant → geral

Settings::forContext('shop:3')->set('shop.currency', 'MZN');

Settings::get('ui.logo', context: 'tenant:5');
Settings::get('ui.logo', context: ['user:42', 'tenant:5']); // user:42 → tenant:5 → global

Settings::set('ui.language', 'pt', options: [
    'metadata' => [
        'label'   => 'Idioma',
        'input'   => 'select',
        'options' => ['pt' => 'Português', 'en' => 'English'],
    ],
]);

$setting = Settings::find('ui.language');
$setting->value;             // 'pt'
$setting->metadata['label']; // 'Idioma'

use Gsebastiao\LaravelSettings\Services\SettingsInheritance;

Settings::set('ui.theme', 'light', options: ['is_inheritable' => true]);

$inheritance = app(SettingsInheritance::class);

$inheritance->forUser($user);                       // ['copied' => 1, 'skipped' => 0, 'namespaces' => ['ui']]
$inheritance->forUser($user, tenantId: 5);          // copia do tenant 5 (e do geral)
$inheritance->forUser($user, namespaces: ['ui']);   // só o grupo 'ui'
$inheritance->preview($user);                       // mostra o que seria copiado, sem alterar nada
$inheritance->resetUser($user);                     // apaga os valores do utilizador e copia de novo

Settings::set('mail.smtp_password', 'segredo', options: ['visibility' => 'hidden']);

use Gsebastiao\LaravelSettings\Models\SettingManager;

// O role 'manager' pode VER billing.plan no tenant 5
SettingManager::grant('billing.plan', context: 'tenant:5', type: 'role', id: 'manager');

// O utilizador 42 pode EDITAR mail.from_name
SettingManager::grant('mail.from_name', context: 'global', type: 'user', id: 42, visibility: 'editable');

SettingManager::revoke('billing.plan', context: 'tenant:5', type: 'role', id: 'manager');

use Gsebastiao\LaravelSettings\Services\SettingsAccessControl;

$access = app(SettingsAccessControl::class);

$access->canView('billing.plan', context: 'tenant:5', user: $user); // true
$access->canEdit('billing.plan', context: 'tenant:5', user: $user); // false
$access->visibilityFor('billing.plan', context: 'tenant:5', user: $user); // 'readonly'

// Filtrar uma lista para uma página de configurações
$visiveis = $access->filterVisible(Setting::forNamespace('billing')->global()->get(), $user);

use Gsebastiao\LaravelSettings\Services\SettingsAccessControl;

SettingsAccessControl::resolveRolesUsing(fn ($user) => $user->roles->pluck('slug'));
bash
php artisan migrate
bash
php artisan settings:clear-cache
bash
php artisan vendor:publish --tag=settings-config