October/WinterCMS插件开发之系统参数配置

官方的这篇文档写的非常详细了,OctoberCMS的文档已经做的非常好了,基本上遇到的问题官网都能解决。正入主题这篇内容记录了在后台系统设置里面加入我们的插件配置项。

先在插件的models目录下新建一个model,分别命名为Settings.php,接着为之建立一个目录settings存放fields.yaml字段配置文件

Settings.php

<?php namespace Julian\Video\Models;

use Model;

class Settings extends Model
{
    public $implement = [\System\Behaviors\SettingsModel::class];

    // A unique code
    public $settingsCode = 'julian_video_settings';

    // Reference to field configuration
    public $settingsFields = 'fields.yaml';
}

settings/fields.yaml

fields:
    watermark_switch:
        span: left
        label: 水印控制
        comment: 是否开启视频水印
        type: switch
        default: 1
        tab: 水印
tabs:
    fields:
        watermark_text:
            type: text
            tab: 水印
            label: 文本
            comment: 设置文印文字
            span: auto
            default: 
        watermark_url:
            type: text
            tab: 水印
            label: 连接地址
            comment: 水印文字连接地址
            span: auto
            default:                 

最后到Plugin的目录下修改Plugin.php,找到registerSettings(),添加

        return [
            'video' => [
                'label' => '视频设置',
                'description' => '视频参数设置',
                'category' => 'Video',
                'icon' => 'icon-video',
                'class' => 'Julian\Video\Models\Settings',
                'order' => 500,
                'keywords' => '',
                'permissions' => ['rainlab.blog.manage_settings']
            ]
        ];

效果图

October/WinterCMS插件开发之系统参数配置

配置数据的读写操作

基础配置已经做完,那么接下来需要在模块中读取与修改参数数据的操作

写入配置数据

use Julian\Video\Models\Settings;

// Set a single value
Settings::set('watermark_text', 'ABCD');

// Set an array of values
Settings::set(['watermark_text' => 'ABCD']);

// Set object values
$settings = Settings::instance();
$settings->watermark_text = 'ABCD';
$settings->save();

读取配置数据

// Outputs: ABCD
echo Settings::instance()->watermark_text;

// Get a single value
echo Settings::get('watermark_text');

// Get a value and return a default value if it doesn't exist
echo Settings::get('is_activated', true);

Post Comment