bwibrew / laravel-sitesettings
为Laravel提供持久化网站设置
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: 2024-09-27 07:28:50 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