geniusts / preferences
为具有多个组件和包的应用程序生成偏好页面的非常简单的方法。
2.4
2023-11-13 03:15 UTC
Requires
- php: >=7.0
- doctrine/dbal: ^2.5|3.*
- illuminate/database: >=5.2
- illuminate/routing: >=5.2
- illuminate/view: >=5.2
README
此包用于生成应用程序的偏好页面,特别是如果您有很多具有不同设置的组件,并且希望将其存储在数据库中并通过 Laravel 的默认配置功能使用。
安装
- 下载包
- 命令行
composer require geniusts/preferences
- 或添加到 composer 文件
{ "require": { "geniusts/preferences": "^2.0" } }
并运行: composer update
- 服务提供者
- 如果您使用 Laravel >=5.5 且已启用
auto-discover
,则无需执行任何操作。 - 如果您的 Laravel <5.5 或您禁用了
auto-discover
,请将 ServiceProvider 添加到config/app.php
中的 providers 数组。
GeniusTS\Preferences\PreferencesServiceProvider::class,
注意:如果您使用 Laravel 5.5 或更高版本,无需添加,它将自动发现
- 控制器和迁移
将包的控制器文件发布到您的应用程序。运行以下命令
php artisan vendor:publish --provider="GeniusTS\Preferences\PreferencesServiceProvider" --tag=controller
您也可以通过以下命令发布视图和迁移
php artisan vendor:publish --provider="GeniusTS\Preferences\PreferencesServiceProvider" --tag=views
php artisan vendor:publish --provider="GeniusTS\Preferences\PreferencesServiceProvider" --tag=migrations
无需发布迁移文件,只需运行迁移命令来执行迁移。
php artisan migrate
如果您在保存数据时想使用
DB
事务,请将protected $transactions = true;
添加到SettingsController
。
- 路由和视图
将两个路由添加到您的路由文件
Route::get('/settings/{preferences_domain?}', 'SettingsController@edit')
->midllware(//Apply your middleware)
Route::patch('/settings/{preferences_domain?}/{preferences_element?}', 'SettingsController@update')
->midllware(//Apply your middleware)
现在您必须创建一个 preferences.settings
视图,并使用您的应用程序布局包含 geniusts_preferences::settings
视图。
@include('geniusts_preferences::settings');
使用
创建设置选项卡
- 创建设置视图: 例如:
settings/general.blade.php
<div class="row"> <div class="col-xs-12"> <div class="form-group"> <label> Test </label> <div class="input-group"> <div class="input-group-addon"> <i class="glyphicon glyphicon-alert"></i> </div> <input class="form-control" name="general[project_name]" value="{{ old('general.project_name', config('preferences.general.project_name')) }}"> </div> </div> </div> </div>
- 将选项卡注册到 PreferencesManager
use GeniusTS\Preferences\Models\Domain; use GeniusTS\Preferences\Models\Element; // Create a settings Domain // Domain(string $key, View $view, string $label) // you can use label like 'labels.general', because the view execute "trans" function $domain = new Domain('general', view('settings.general'), 'General'); // Add the inputs names and validation rules // Element(string $name, mixed $rules) $domain->addElement(new Element('project_name', 'required|max:255')); // OR for array values $domain->addElement(new Element('options', ['options' => 'array', 'options.*' => 'required|integer'])); // register the Domain to the Preferences manager $manager = resolve('preferences'); // or app('preferences') for versions older than 5.3 $manager->addDomain($domain);
您可以在包服务提供者的
boot
函数中注册domains
。
访问已保存的设置
使用默认的 config
函数或 Config
类来获取设置值:config('preferences.{domain}.{element}')
config('preferences.general.project_name');
从版本 1 迁移
-
更新偏好视图中的输入名称。例如:您有一个
general
域,它具有project_name
元素,那么输入名称应该是general[project_name]
。 -
更新项目中
SettingsController
内的edit
和handleSuccessResponse
方法的声明。
public function edit($domain = null) { // Logic here } protected function handleSuccessResponse($domain, $element) { // Logic here }
许可
此包是免费软件,根据 MIT 许可证条款分发。