jamin87 / laravel-sitesettings
Requires
- php: >=7.2
- illuminate/database: ^5.5 || ^6.0
- illuminate/support: ^5.5 || ^6.0
Requires (Dev)
- codacy/coverage: ^1.4
- fzaninotto/faker: ^1.6
- league/flysystem: ~1.0.8
- mockery/mockery: ^1.2.2
- orchestra/database: ^3.5.3 || ^4.0
- orchestra/testbench: ^3.5.5 || ^4.0
- phpmd/phpmd: ^2.6
- phpunit/phpunit: ^8.0.4
- spatie/laravel-medialibrary: ^7.0
- squizlabs/php_codesniffer: ^3.0
Suggests
- spatie/laravel-medialibrary: Allows files to be uploaded and associated with settings.
This package is auto-updated.
Last update: 2020-05-26 21:30:40 UTC
README
支持
此版本支持Laravel 5.5 - 6 / PHP 7.2及以上。
安装
使用Composer运行以下命令进行安装
composer require BWibrew/laravel-sitesettings
使用以下命令发布配置文件
php artisan vendor:publish --provider="BWibrew\SiteSettings\SiteSettingsServiceProvider" --tag="config"
使用以下命令发布迁移
php artisan vendor:publish --provider="BWibrew\SiteSettings\SiteSettingsServiceProvider" --tag="migrations"
然后运行表迁移
php artisan migrate
配置你的模型
将以下接口、特质和$fillable
属性添加到你的Setting
模型中
<?php namespace App; use Illuminate\Database\Eloquent\Model; use BWibrew\SiteSettings\Traits\ManagesSettings; use BWibrew\SiteSettings\Interfaces\SettingInterface; class Setting extends Model implements SettingInterface { use ManagesSettings; protected $fillable = [ 'name', 'value', 'updated_by', ]; // }
如果你使用作用域,也请将以下接口、特质和$fillable
属性添加到你的Scope
模型中
<?php namespace App; use Illuminate\Database\Eloquent\Model; use BWibrew\SiteSettings\Interfaces\ScopeInterface; use BWibrew\SiteSettings\Traits\ManagesSettingScopes; class Scope extends Model implements ScopeInterface { use ManagesSettingScopes; protected $fillable = [ 'name', ]; // }
文件上传
要支持将上传的文件保存为设置,还需要安装spatie/laravel-medialibrary
包。
composer require spatie/laravel-medialibrary
完整的安装说明可以在这里找到。
以下是所需的最小设置
使用以下命令发布迁移
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="migrations"
然后运行表迁移
php artisan migrate
将磁盘添加到app/config/filesystems.php
中。例如:
... 'disks' => [ ... 'media' => [ 'driver' => 'local', 'root' => public_path().'/media', ], ...
最后,你需要在Setting
模型上使用SettingWithMediaInterface
和ManagesSettingsWithMedia
而不是使用SettingInterface
和ManagesSettings
。
用法
此包提供了一个方便的API,用于使用现有的Eloquent模型来使用设置。
注册新设置
设置创建如下
Setting::register('homepage_title');
您也可以在创建设置时分配一个值
Setting::register('homepage_title', 'Laravel Site Settings');
然后您可以检索设置的值
Setting::getValue($name);
更新设置
要更新现有设置
$setting = Setting::where('name', 'setting_name')->first(); // Update setting value $setting->updateValue('A new title'); // Update setting name $setting->updateName('new_name');
您还可以检索最后更新设置的用户ID以及更新时间。
Setting::getUpdatedBy($name); // Returns user ID Setting::getUpdatedAt($name); // Returns Carbon date object
使用作用域
您可以将设置分类到“作用域”。作用域在设置名称上使用简单的点符号。
要分配或检索作用域内的设置,将作用域名称放在设置名称前面,并用点号分隔:scope_name.setting_name
。这与所有以设置名称作为参数的方法相同。
还有许多与作用域一起使用的方法
// Return an array of all values from a scope Setting::getScopeValues(); // Return the user ID of the user which last updated a setting in a scope Setting::getScopeUpdatedBy(); // Return when the most recent update was made in a scope Setting::getScopeUpdatedAt();
要更新或删除作用域
$setting = Setting::where('name', 'setting_name')->first(); $setting->updateScope('new_scope_name'); $setting->removeScope();
与文件上传一起使用
此包可以利用神奇的Spatie/MediaLibrary来提供将设置与上传的媒体相关联的能力。
要使用文件上传作为设置,只需将文件上传设置为设置值。
示例
$file = $request->file('avatar'); $setting = Setting::register('avatar', $file);
文件上传设置返回的值是由file_value_type
配置值控制的字符串。
配置
将 use_scopes
设置为 false
以禁用作用域的使用。
file_value_type
设置控制设置表中存储的值。这可以设置为 'file_name'
、'path'
或 'url'
。
测试
使用以下命令运行测试:
composer test