it-devgroup/laravel-setting-lite

2.0.0 2023-02-16 00:49 UTC

This package is auto-updated.

Last update: 2024-09-27 14:17:07 UTC


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