PHP code example of rawnoq / laravel-settings

1. Go to this page and download the library: Download rawnoq/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/ */

    

rawnoq / laravel-settings example snippets


// Set a setting
setting('site_name', 'My Awesome Site');

// Get a setting value
$siteName = setting('site_name');

// Set with group
setting('site_email', '[email protected]', 'general');

// Set translatable value
setting('site_title', [
    'en' => 'Welcome',
    'ar' => 'مرحباً',
]);

// Set multiple settings
settings([
    'site_name' => 'My Site',
    'site_email' => '[email protected]',
]);

// Seed using the default config/settings.php
settings()->seed();

// Seed using a custom config key
settings(null, 'custom.settings');

// Seed using an inline array structure
settings([
    'translatable' => [
        'general' => [
            'site_name' => [
                'en' => 'My Site',
                'ar' => 'موقعي',
            ],
            'site_description' => [
                'en' => 'A great website',
                'ar' => 'موقع رائع',
            ],
        ],
    ],
    'fixed' => [
        'general' => [
            'site_email' => '[email protected]',
            'phone_numbers' => ['+1234567890', '+0987654321'],
        ],
        'social' => [
            'facebook_url' => 'https://facebook.com/example',
            'twitter_url' => 'https://twitter.com/example',
        ],
    ],
]);

// Get all settings
$allSettings = settings()->all();

use Rawnoq\Settings\Facades\Settings;

// Set a simple string value
Settings::set('site_name', 'My Awesome Site');

// Set a translatable value
Settings::set('site_title', [
    'en' => 'Welcome to Our Site',
    'ar' => 'مرحباً بكم في موقعنا',
    'fr' => 'Bienvenue sur notre site',
]);

// Set a value with a group
Settings::set('site_email', '[email protected]', 'general');

// Set multiple values at once
Settings::setMany([
    'site_name' => 'My Site',
    'site_email' => '[email protected]',
    'site_phone' => '+1234567890',
]);

// Get a single setting
$setting = Settings::get('site_name');
$value = $setting->resolved_value; // Get the resolved value

// Get multiple settings
$settings = Settings::get(['site_name', 'site_email']);

// Get all settings
$allSettings = Settings::all();

// Get settings by group
$generalSettings = Settings::getByGroup('general');

// Get settings as key-value array
$settingsArray = Settings::getByGroupAsKeyValue('general');
// Returns: ['site_name' => 'My Site', 'site_email' => '[email protected]']

// Simple string
Settings::set('site_email', '[email protected]');

// Array (stored as JSON)
Settings::set('phone_numbers', [
    '+1234567890',
    '+0987654321',
]);

// The array will be automatically decoded when retrieved
$phones = Settings::get('phone_numbers')->resolved_value;
// Returns: ['+1234567890', '+0987654321']

// The package automatically detects locale keys
Settings::set('site_title', [
    'en' => 'Site Title',
    'ar' => 'عنوان الموقع',
    'fr' => 'Titre du site',
    'es' => 'Título del sitio',
]);

// When retrieving, it returns the value for the current locale
$title = Settings::get('site_title')->resolved_value;

// Add setting to a single group
Settings::set('site_name', 'My Site', 'general');

// Add setting to multiple groups
Settings::set('site_name', 'My Site', ['general', 'seo', 'social']);

// Retrieve all settings in a group
$generalSettings = Settings::getByGroup('general');

// Get as key-value array for easy access
$settings = Settings::getByGroupAsKeyValue('general');
// ['site_name' => 'My Site', 'site_email' => '[email protected]']

// In config/settings.php
return [
    'translatable' => [
        'general' => [
            'site_name' => [
                'en' => 'My Site',
                'ar' => 'موقعي',
            ],
            'site_description' => [
                'en' => 'A great website',
                'ar' => 'موقع رائع',
            ],
        ],
    ],
    'fixed' => [
        'general' => [
            'site_email' => '[email protected]',
            'phone_numbers' => ['+1234567890', '+0987654321'],
        ],
        'social' => [
            'facebook_url' => 'https://facebook.com/example',
            'twitter_url' => 'https://twitter.com/example',
        ],
    ],
];

// Load settings from config
Settings::load(config('settings'));



namespace Database\Seeders;

use Illuminate\Database\Seeder;

class SettingsSeeder extends Seeder
{
    public function run(): void
    {
        // This will load config('settings') by default
        settings()->seed();

        // Optionally seed from a different config key or inline array
        // settings(null, 'custom.settings');
        // settings([
        //     'translatable' => [...],
        //     'fixed' => [...],
        // ]);
    }
}

public function run(): void
{
    $this->call(SettingsSeeder::class);
}

use Rawnoq\Settings\Services\SettingService;

$service = app(SettingService::class);
$service->set('key', 'value');
$setting = $service->get('key');

use Rawnoq\Settings\Repositories\SettingRepository;

$repository = app(SettingRepository::class);

// Find by key
$setting = $repository->findByKey('site_name');

// Find or fail
$setting = $repository->findOrFailByKey('site_name');

// Get multiple by keys
$settings = $repository->getManyByKeys(['site_name', 'site_email']);

// Get all with filters
$settings = $repository->getAll();

use Spatie\QueryBuilder\QueryBuilder;
use Rawnoq\Settings\Models\Setting;

// Filter by key
$settings = QueryBuilder::for(Setting::class)
    ->allowedFilters(['key'])
    ->where('key', 'site_name')
    ->get();

// Filter by group
$settings = QueryBuilder::for(Setting::class)
    ->allowedFilters(['group'])
    ->where('group', 'like', '%general%')
    ->get();

// Include translations
$settings = QueryBuilder::for(Setting::class)
    ->allowedIncludes(['translations'])
    ->get();

use Rawnoq\Settings\Models\Setting;

// In your controller
public function index()
{
    $settings = settings()->all();
    return response()->json($settings);
}

// Single setting
public function show($key)
{
    $setting = settings()->get($key);
    return response()->json([
        'key' => $setting->key,
        'value' => $setting->resolved_value,
        'group' => $setting->group,
        'groups' => $setting->groups,
        'is_translatable' => $setting->is_translatable,
        'updated_at' => $setting->updated_at,
    ]);
}

// With translations
$setting = settings()->get($key)->load('translations');

use Rawnoq\Settings\Models\Setting;

// Create a new setting
$setting = Setting::create([
    'key' => 'site_name',
    'group' => 'general',
    'fixed_value' => 'My Site',
    'is_active' => true,
    'autoload' => true,
    'is_translatable' => false,
]);

// Access resolved value
$value = $setting->resolved_value;

// Access groups as array
$groups = $setting->groups; // ['general', 'seo']

// Work with translations
$setting->is_translatable = true;
$setting->save();

$setting->translations()->create([
    'locale' => 'en',
    'value' => 'My Site',
]);

$setting->translations()->create([
    'locale' => 'ar',
    'value' => 'موقعي',
]);

// Simple value
setting('site_name', 'My Site');

// With group
setting('site_name', 'My Site', 'general');

// Translatable value
setting('site_title', ['en' => 'Title', 'ar' => 'عنوان']);

// Only add group without updating value
setting('site_name', null, 'seo', true);

// Get single setting value
$siteName = setting('site_name'); // Returns the resolved value directly

// Get multiple settings
$settings = setting(['site_name', 'site_email']); // Returns Collection

// Get service instance
$service = setting(); // Returns SettingService instance

settings([
    'site_name' => 'My Site',
    'site_email' => '[email protected]',
    'site_phone' => '+1234567890',
]);

$allSettings = settings(); // Returns Collection
bash
php artisan vendor:publish --tag=settings-config
bash
php artisan vendor:publish --tag=settings-migrations
php artisan migrate
bash
php artisan db:seed --class=Database\\Seeders\\SettingsSeeder
bash
php artisan migrate