Coder Social home page Coder Social logo

laravel-settings's Introduction

Latest Version on Packagist Total Downloads

Persistent Settings Manager for Laravel

  • Simple key-value storage
  • Support multi-level array (dot delimited keys) structure.
  • Localization supported.
  • Localization using dimsav/laravel-translatable

Installation

  1. Install package

    composer require elnooronline/laravel-settings
  2. Edit config/app.php (Skip this step if you are using laravel 5.5+)

    service provider:

    Elnooronline\LaravelSettings\Providers\ServiceProvider::class,

    class aliases:

    'Setting' => Elnooronline\LaravelSettings\Facades\Setting::class,
  3. Create settings table

    php artisan vendor:publish --provider="Elnooronline\LaravelSettings\Providers\ServiceProvider"
    php artisan migrate

Usage

Setting::get('name', 'Computer');
// get setting value with key 'name'
// return 'Computer' if the key does not exists
 
Setting::all();
// get all settings
 
Setting::lang('en')->get('name', 'Computer');
// get setting value with key and language
 
Setting::get('name:en', 'Computer');
// get setting value with key and language
 
Setting::set('name', 'Computer');
// set setting value by key
 
Setting::lang('en')->set('name', 'Computer');
// set setting value by key and language
 
Setting::set('name:en', 'Computer');
// set setting value by key and language
 
Setting::has('name');
// check the key exists, return boolean
 
Setting::lang('en')->has('name');
// check the key exists by language, return boolean
 
Setting::has('name:en');
// check the key exists by language, return boolean
 
Setting::forget('name');
// delete the setting by key
 
Setting::lang('en')->forget('name');
// delete the setting by key and language
 
Setting::forget('name:en');
// delete the setting by key and language

Dealing with array

Setting::get('item');
// return null;
 
Setting::set('item', ['USB' => '8G', 'RAM' => '4G']);
Setting::get('item');
// return array(
//     'USB' => '8G',
//     'RAM' => '4G',
// );
 
Setting::get('item.USB');
// return '8G';

Conditions

in your AppServiceProvider you can register new prefix method.

public function boot()
{
	Setting::registerPrefixMethod('country');
	...
}

or you can register prefix methods from config file by adding your prefix to prefix_methods array

<?php
return [
    /**
     * The model of the settings table.
     * if you want to override the model you should extend your settings model from the package model class.
     *
     *   'model_class' => \App\CustomSetting::class,
     *
     *   class CustomSetting extends \Elnooronline\LaravelSettings\Models\SettingModel
     *   {
     *      ...
     *   }
     */
    'model_class' => \Elnooronline\LaravelSettings\Models\SettingModel::class,
 
    /**
     * The registered prefix methods.
     * Ex:
     * 'prefix_methods' => [
     *      'country'
     *  ],
     * Usage:
     * Setting::country('us')->set('title', 'Website')
     */
    'prefix_methods' => [
        //
    ],
];

Usage

Setting::country('us')->set('title', 'Example Website');
 
Setting::get('name');
// return return 'Example Website';
 
Setting::country('eg')->set('title', 'عنوان الموقع');
 
Setting::country('eg')->get('name');
// return return 'عنوان الموقع';
 
Setting::country('eg')->forget('name');
// delete the setting by key and country

laravel-settings's People

Contributors

ahmed-aliraqi avatar omarsoliman15 avatar nohamahmoud avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.