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]']
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