surya/laravel-settings

用于管理应用程序设置的laravel包

v1.2.2 2019-11-10 06:52 UTC

This package is auto-updated.

Last update: 2024-09-18 12:49:20 UTC


README

用于管理应用程序设置的laravel包

安装

composer require surya/laravel-settings

此包需要laravel 5.5或更高版本,如果您的laravel当前版本低于5.5,您可以安装此包,但它未经过任何测试。

config/app.php中注册ServiceProvider

'providers' => [
    Surya\Setting\SettingServiceProvider::class,
]

同时注册Facade别名

'aliases' => [
    'Setting' => Surya\Setting\Facades\Setting::class,
]

发布迁移表

php artisan vendor:publish --provider="Surya\Setting\SettingServiceProvider" --tag="migrations"

迁移

php artisan migrate

用法

默认情况下,用于存储设置文件夹位于resources/settings,因此您必须自行创建settings文件夹。

创建设置文件

让我们创建名为general.php的设置文件

return [
    'site_name'     => [
        'type'      => 'text',
        'default'   => 'Laravel',
        'label'     => 'Site Name'
    ],
    'genre'         => [
        'type'      => 'radio',
        'default'   => 'male',
        'label'     => 'Genre',
        'options'   => [
            'male'      => 'Male',
            'female'    => 'Female'
        ]
    ]
]

设置文件的名称也指代分组,用于获取设置值,设置文件仅包含设置属性的数组。site_name是设置的键。

可用的设置属性

  1. type => 设置的类型,基本上是输入标签,例如:文本、文本区域、选择、数字等。
  2. default => 设置的默认值。
  3. label => 设置标签。
  4. options => 仅针对类型选择和单选。

渲染设置文件

设置文件创建后,您可以使用blade指令来渲染设置文件

@rendersettings('general')

@rendersettings指令不包括表单标签,因此您应该在表单标签之间渲染设置

<form method="POST" action="#yoursettingsaveroute">
    {!! csrf_field() !!}
    @rendersettings('general')
    <input type="submit" value="Save">
</form>

所有设置类型都是Bootstrap友好的,因此它们将适应您的Bootstrap主题。

保存您的设置

您可以使用外观来简单地保存设置

use Setting;
use Illuminate\Http\Request;

class SettingController extends Controller
{
    public function save(Request $request)
    {
        Setting::save($request->except('_token'));
        return redirect('your.view');
    }
}

与值互动

获取设置值

有三种不同的方式来获取设置值。使用指令

@settings('filename.key')

使用辅助函数

settings('group.key');

使用外观类

Setting::get('group.key');

获取设置属性

Setting::getSettingProp('group.key.default')

或者

setting('group.key.default')

检查设置是否存在

Setting::exists('group', 'key)

或者

settingExists('group', 'key')

修改设置类型

您仍然可以控制修改每个设置类型或添加新的设置类型。

发布设置类型视图

php artisan vendor:publish --provider="Surya\Setting\SettingServiceProvider" --tag="views"

如您所见,在resources/view/vendor/setting/settings中,每个设置type视图都有与type属性完全相同的名称,因此如果您想要额外的设置类型,只需添加另一个视图文件。

例如,如果您想要创建接受电子邮件的设置

<div class="form-group">
    <label for="email-{{ $i }}">{{ $label }}</label>
    <input type="email" id="email-{{ $i }}" class="form-control" value="{{ $value }}" name="value[]">
</div>

每个设置键的所有属性都自动传递。保存为email.blade.php,它将自动识别为电子邮件设置类型。

1.2.+ 新增功能

您现在可以为选择设置类型添加资源键

例如,如果您想要从数据库中选择主要用户

return [
    'primary_user'    => [
        'type'  => 'select',
        'label' => 'Select a Primary User',
        'source'    => App\User::class,
        'show_label'     => 'email'
    ],
]

有3个新键,source是模型源,show_label是模型属性,key如果您的模型主键是id则保留为空。

当前source键仅适用于select设置类型

1.2.1 新增功能

新增switch设置类型。

'example_switch'    => [
        'type'  => 'switch',
        'default'   => 0,
        'label' => 'Switch Example',
    ]

为了使用开关,必须包含bootstrap,否则您将获得正常的复选框输入

现在设置类型check可以使用options

'includes'   => [
    'type'      => 'check',
    'default'   => ['logo', 'profile'],
    'label'     => 'Your website include: ',
    'options'   => [
        'profile'   => 'Your profile',
        'logo'      => 'Your logo',
        'identity'  => 'Your identity'
    ]
],