Skip to content

integrated structure

tolizhan edited this page May 1, 2025 · 5 revisions

了解插件

插件使用

  • 系统默认集成了一些第三方插件
  • 分前端和后端, 如: 前端 图表 上传 的封装, 后端 Excel Word 的操作
  • 通过开启框架配置_of.preloaded中的of_base_link_setup项可以启动插件调用
  • 前端通过 L.open(插件名, 插件参数) 调用对应插件
  • 后端通过 L::open(插件名) 开启对应插件

插件集成

  • 可以将任何一个拥有独立功能的工具集成进来
  • 但符合 Composer 规范的建议直接通过 composer 方式集成
  • 除框架自身集成的插件还可以自定义进行集成
  • 通过框架配置 _of.link.addin.pConfig 可集成php方式调用的插件, 默认 ROOT_DIR . '/include/application/config.php'
  • 通过框架配置 _of.link.addin.jConfig 可集成js方式调用的插件, 默认 ROOT_URL . '/include/application/config.js'

集成php插件

  • 修改该配置文件的内容集成新插件, 并且不会因框架升级而被覆盖
<?php
$appDir = dirname(__FILE__);

switch ($name) {     //phpExcel     case 'excel':         class_exists('PHPExcel', false) || require $appDir . '/PHPOffice/PHPExcel.php';         break;     //phpWord     case 'word' :         class_exists('PHPWord', false) || require $appDir . '/PHPOffice/PHPWord.php';         break;     //phpSoap     case 'soap' :         class_exists('nusoap_base', false) || require $appDir . '/nusoap/nusoap.php';         break;     //phpMailer     case 'mail' :         function_exists('PHPMailerAutoload') || require $appDir . '/PHPMailer/PHPMailerAutoload.php';         break;     //tcPdf     case 'pdf' :         class_exists('TCPDF', false) || require $appDir . '/tcpdf/tcpdf.php';         break;     //phprpc     case 'phprpc' :         class_exists('PHPRPC_Client', false) ||         class_exists('PHPRPC_Server', false) ||         class_exists('PHPRPC_Date', false) ||         of::event('of::loadClass', array(             'filter' => 'PHPRPC_', 'router' => strtr(substr($appDir, strlen(ROOT_DIR)), '\', '/') . '/phprpc/PHPRPC_'         ), true);         break; }

集成JS插件

  • 修改该配置文件的内容集成新插件, 并且不会因框架升级而被覆盖
//插件访问根路径
var appUrl = config.slice(0, config.lastIndexOf('/'));

/**   描述 : L.open 使用的配置文件   注明 :         config 默认为配置文件路径的字符串, 须配置成插件对象的结构 {            插件键 : {                "path"  : 插件根目录                "list"  : 加载的列表 {                    相对path的js或css地址(_开头的为绝对路径或网址) : false=不调用, 方法=加载后回调函数,                    ...                },                "ready" : 方法=加载js列表前调用                "init"  : 方法=加载完成后初始化            }        }        所有方法接受三个参数 : (调用参数, 当前配置, 插件名), this=指定的window   作者 : Edgar.lee  / config = {     'zTree' : {         //插件根目录         'path'  : appUrl + '/zTree',         //加载的列表         'list'  : {             '/js/jquery.ztree.core.js' : false,             '/style/zTreeStyle.css'    : false         },         //加载前调用         'ready' : function (p, c) {             if (!window.jQuery) {                 var temp = {};                 temp['_' + OF_URL + '/att/link/jquery.js'] = false;                 //将jQuery插入到列表最前面                 c.list = L.each(temp, c.list);             }             if (p && p.expand) {                 for (var i in p.expand) {                     c.list['/js/jquery.ztree.' +p.expand[i]+ '.js'] = false;                 }             }         },         //加载完调用         'init'  : function () {             return this.$.fn.zTree;         }     } }

Clone this wiki locally