在插件中加入自定义类别的扩展,如下图所示:

Markdown编辑器

官方实例插件:https://www.xunruicms.com/shop/app/708.html


以Demo插件目录为例,实现步骤:

1、创建字段配置文件dayrui/App/Demo/Fields/Field.php

<?php

/**
 * 可用字段
 * id  插件目录名::文件名称
 * name 显示名称
 */

return [
    [
        'id' => 'Demo::Textarea', // 插件目录名::文件名称
        'name' => '测试文本编辑器',
    ],
];


2、创建字段解析文件dayrui/App/Demo/Fields/Textarea.php 文件命名与上面保持一致

<?php namespace My\Field\Demo; // demo是插件目录

class Textarea extends \Phpcmf\Library\A_Field {

    /**
     * 构造函数
     */
    public function __construct(...$params) {
        parent::__construct(...$params);
        $this->fieldtype = TRUE;
        $this->defaulttype = 'TEXT'; // 默认显示的类型
    }

    /**
     * 字段相关属性参数
     */
    public function option($option) {
        return [
            $this->field_type($option['fieldtype'], $option['fieldlength']),
            ''
        ];
    }


    /**
     * 字段显示
     */
    public function show($field, $value = null) {
        $html = '
        <div class="portlet  bordered light">
        <div class="portlet-body">
        <div class="scroller" style="width:100%" data-always-visible="1" data-rail-visible="1">
        '.nl2br(htmlentities($value)).'                
        </div>
        </div>
        </div>';
        return $this->input_format($field['fieldname'], $field['name'], $html);
    }

    /**
     * 字段表单输入
     */
    public function input($field, $value = '') {

        // 字段禁止修改时就返回显示字符串
        if ($this->_not_edit($field, $value)) {
            return $this->show($field, $value);
        }

        // 字段存储名称
        $name = $field['fieldname'];

        // 字段显示名称
        $text = ($field['setting']['validate']['required'] ? '<span class="required" aria-required="true"> * </span>' : '').dr_lang($field['name']);


        // 表单附加参数
        $attr = $field['setting']['validate']['formattr'];

        // 字段提示信息
        $tips = $field['setting']['validate']['tips'] ? '<span class="help-block" id="dr_'.$field['fieldname'].'_tips">'.$field['setting']['validate']['tips'].'</span>' : '';

        // 表单高度设置
        $height = $field['setting']['option']['height'] ? $field['setting']['option']['height'] : '100';

        // 字段默认值
        $value = strlen($value) ? $value : $this->get_default_value($field['setting']['option']['value']);

        $str = '<textarea class="form-control" style="height:'.$height.'px; width:100%;" name="data['.$name.']" id="dr_'.$name.'" '.$attr.'>'.$value.'</textarea>';

        return $this->input_format($name, $text, $str.$tips);
    }

}


这里的逻辑结构可以由开发者自由开发,例子以textarea为例。


4、然后在任意地方创建字段,可以选择本字段类别


文档最后更新时间:2021-03-19 12:12:52
我来修改此文档(1) 不会操作怎么办?