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', ]; // }
如果使用范围(scopes),则还将以下接口、特性和 $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