bwibrew/laravel-sitesettings
Composer 安装命令:
composer require bwibrew/laravel-sitesettings
包简介
Persistent site settings for Laravel
README 文档
README
Support
This version supports Laravel 5.5 - 6 / PHP 7.2 and above.
Installation
Install using Composer by running:
composer require BWibrew/laravel-sitesettings
Publish the config file with:
php artisan vendor:publish --provider="BWibrew\SiteSettings\SiteSettingsServiceProvider" --tag="config"
Publish the migrations with:
php artisan vendor:publish --provider="BWibrew\SiteSettings\SiteSettingsServiceProvider" --tag="migrations"
Then run table migrations with:
php artisan migrate
Configuring your models
Add the following interface, trait and $fillable attribute to your Setting model:
<?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', ]; // }
If using scopes then also add the following interface, trait and $fillable attribute to your Scope model:
<?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', ]; // }
File Uploads
To support the ability to save uploaded files as settings you also need to install the spatie/laravel-medialibrary
package.
composer require spatie/laravel-medialibrary
Full installation instructions can be found here.
Here is the minimum set-up needed:
Publish the migration with:
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="migrations"
Then run table migrations with:
php artisan migrate
Add a disk to app/config/filesystems.php. e.g:
... 'disks' => [ ... 'media' => [ 'driver' => 'local', 'root' => public_path().'/media', ], ...
Lastly, you will need to use SettingWithMediaInterface and ManagesSettingsWithMedia instead
of SettingInterface and ManagesSettings on your Setting model.
Usage
This package provides a convenient API for using the settings with an existing Eloquent Model.
Registering a new setting
A setting is created like this:
Setting::register('homepage_title');
You can also assign a value when creating a setting:
Setting::register('homepage_title', 'Laravel Site Settings');
You can then retrieve the value of the setting:
Setting::getValue($name);
Updating a setting
To update an existing setting:
$setting = Setting::where('name', 'setting_name')->first(); // Update setting value $setting->updateValue('A new title'); // Update setting name $setting->updateName('new_name');
You can also retrieve the ID of the user whom last updated the setting and when the update was made.
Setting::getUpdatedBy($name); // Returns user ID Setting::getUpdatedAt($name); // Returns Carbon date object
Using scopes
You can categories your settings into 'scopes'. Scopes use a simple dot syntax on the setting name.
To assign or retrieve a setting in a scope, place the scope name in front of the setting name and separate them with a
dot: scope_name.setting_name.
This works the same way with all methods which take a setting name as a parameter.
There are also a number of extra methods used with scopes:
// 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();
To update or remove a scope:
$setting = Setting::where('name', 'setting_name')->first(); $setting->updateScope('new_scope_name'); $setting->removeScope();
Usage with file uploads
This package can make use of the amazing Spatie/MediaLibrary to provide the ability to associate settings with uploaded media.
To use a file upload as a setting simply set the file upload as the setting value.
Example:
$file = $request->file('avatar'); $setting = Setting::register('avatar', $file);
The value returned on a file upload setting is a string controlled by the file_value_type config value.
Configuration
Set use_scopes to false to disable the use of scopes.
The file_value_type setting controls the value stored in the settings table. This can be set to 'file_name',
'path' or 'url'.
Testing
Run tests with:
composer test
bwibrew/laravel-sitesettings 适用场景与选型建议
bwibrew/laravel-sitesettings 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 859 次下载、GitHub Stars 达 4, 最近一次更新时间为 2017 年 08 月 15 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「cms」 「laravel」 「Settings」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 bwibrew/laravel-sitesettings 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 bwibrew/laravel-sitesettings 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 bwibrew/laravel-sitesettings 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Persistent settings package for Laravel framework.
GraphQL authentication for your headless Craft CMS applications.
Set Links with a specific language parameter
A Zend Framework module to quickly and easily set PHP settings.
Supercharged text field validation.
Settings Card for Laravel Nova.
统计信息
- 总下载量: 859
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 10
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-08-15