elnooronline / laravel-settings
此包已被废弃且不再维护。未建议替代包。
Laravel 持久化键值存储
v6.0.3
2019-01-30 16:06 UTC
Requires
- laravel/framework: 5.5.*|5.6.*|5.7.*
- laravelcollective/html: ^5.6
Requires (Dev)
- mockery/mockery: ^1.2
- orchestra/testbench: ~3.0
README
Laravel 持久化设置管理器
- 简单键值存储
- 支持多级数组(点分隔键)结构。
- 支持本地化。
- 使用 dimsav/laravel-translatable 进行本地化
安装
-
安装包
composer require elnooronline/laravel-settings
-
编辑 config/app.php(如果你使用的是 laravel 5.5+,则跳过此步骤)
服务提供者
Elnooronline\LaravelSettings\Providers\ServiceProvider::class,
类别名
'Setting' => Elnooronline\LaravelSettings\Facades\Setting::class,
-
创建设置表
php artisan vendor:publish --provider="Elnooronline\LaravelSettings\Providers\ServiceProvider" php artisan migrate
使用方法
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
处理数组
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';
条件
在你的
AppServiceProvider
中可以注册新的前缀方法。
public function boot() { Setting::registerPrefixMethod('country'); ... }
或者你可以通过将你的前缀添加到
prefix_methods
数组中,从配置文件中注册前缀方法
<?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' => [ // ], ];
使用方法
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
你也可以使用
HasSettings
特性将自定义设置添加到特定模型中,如下例所示
<?php namespace App; use Illuminate\Foundation\Auth\User as Authenticatable; use Elnooronline\LaravelSettings\Models\Traits\HasSettings; class User extends Authenticatable { use HasSettings; ... }
使用方法
$user->settings()->set('key', 'value'); $user->settings()->get('key', 'value'); // Or Seeting::for($user)->set('key', 'value'); Seeting::for($user)->set('key', 'value');