it-devgroup / laravel-setting-lite
laravel setting lite
2.0.0
2023-02-16 00:49 UTC
Requires
- php: ^8.0
- ext-json: *
- illuminate/collections: ^9.0|^10.0
- illuminate/database: ^9.0|^10.0
- illuminate/support: ^9.0|^10.0
- nesbot/carbon: ^2.0
README
Lumen 安装
1. 打开文件 bootstrap/app.php
取消注释的字符串
$app->withFacades();
$app->withEloquent();
添加在 $app->configure('app'); 之后
$app->configure('setting_lite');
添加新的服务提供者
$app->register(\ItDevgroup\LaravelSettingLite\Providers\SettingServiceProvider::class);
2. 运行命令
用于创建配置文件
php artisan setting:publish --tag=config
用于创建语言文件
php artisan setting:publish --tag=lang
用于创建迁移文件
php artisan setting:publish --tag=migration
用于生成表
php artisan migrate
laravel 安装
1. 打开文件 config/app.php 并搜索
'providers' => [
...
]
添加到部分
\ItDevgroup\LaravelSettingLite\Providers\SettingServiceProvider::class,
示例
'providers' => [
...
\ItDevgroup\LaravelSettingLite\Providers\SettingServiceProvider::class,
]
2. 运行命令
用于创建配置文件
php artisan vendor:publish --provider="ItDevgroup\LaravelSettingLite\Providers\SettingServiceProvider" --tag=config
用于创建语言文件(如果需要设置描述)
php artisan vendor:publish --provider="ItDevgroup\LaravelSettingLite\Providers\SettingServiceProvider" --tag=lang
用于创建迁移文件
php artisan setting:publish --tag=migration
用于生成表
php artisan migrate
下一步安装laravel和lumen
1. 如果不存在,为设置创建seeder文件。在创建的seed文件中,您需要添加一个静态方法(例如,public static function data())。该方法必须返回一个标准数组以填充数据库
2. 打开配置文件 config/setting_lite.php 并将此类和方法添加到存在的参数中
'data' => [
'class' => SettingTableSeeder::class,
'method' => 'data',
],
同步设置的命令
php artisan setting:sync
自定义模型
第一步
为设置创建自定义模型
示例
文件: app/CustomFile.php
内容
<?php
namespace App;
class CustomFile extends \ItDevgroup\LaravelSettingLite\Model\Setting
{
}
如果需要添加其他代码
<?php
namespace App;
class CustomFile extends \ItDevgroup\LaravelSettingLite\Model\Setting
{
// other code
}
第二步
打开 config/setting_lite.php 并更改参数 "model",例如
...
// replace
'model' => \ItDevgroup\LaravelSettingLite\Model\Setting::class,
// to
'model' => \App\CustomFile::class,
第三步
在所有地方使用自定义 \App\CustomFile 模型代替标准模型 \ItDevgroup\LaravelSettingLite\Model\Setting
使用函数
获取设置值的函数使用示例
setting('SETTING_KEY', 'DEFAULT VALUE IF EMPTY SETTING VALUE')
使用
初始化服务
$service = app(\ItDevgroup\LaravelSettingLite\SettingServiceInterface::class);
或注入
// use
use ItDevgroup\LaravelSettingLite\SettingServiceInterface;
// constructor
public function __construct(
SettingServiceInterface $settingService
)
我们将使用变量 $service
获取UI上渲染的类型
$array = $service->getTypes();
获取组
仅从设置的表中保存的组
$array = $service->getGroups();
设置列表
所有设置
$eloquentCollection = $service->getList();
带过滤器的设置。所有过滤参数都不是必需的
$filter = (new \ItDevgroup\LaravelSettingLite\Model\SettingFilter())
->setIsPublic(true);
// or
$filter = (new \ItDevgroup\LaravelSettingLite\Model\SettingFilter())
->setKey('partial_key_name')
->setType('type_name')
->setGroup('group_name')
->setIsPublic(true);
$eloquentCollection = $service->getList($filter);
带排序的设置
$eloquentCollection = $service->getList(null, $fieldName, $ascOrDesc);
$eloquentCollection = $service->getList(null, 'key', 'ASC');
通过ID获取设置
$setting = $service->getById(1);
通过KEY获取设置
$setting = $service->getByKey('SETTING_KEY');
创建设置
$setting = \ItDevgroup\LaravelSettingLite\Model\Setting::register(
'key_1',
'test value',
'text',
'Test'
);
$setting->options = ['val1', 'val2'];
$setting->is_public = true;
$service->createModel($setting);
更新设置
$setting = $service->getById(1);
$setting->value = 'test value';
$setting->options = ['val1', 'val2'];
$setting->is_public = true;
$service->updateModel($setting);
删除设置
$setting = $service->getById(1);
$service->deleteModel($setting);
测试
测试需要phpunit
vendor/bin/phpunit vendor/it-devgroup/laravel-setting-lite