合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
官方提供了一个 系统信息(SystemInfo) 插件 看上去很简单 其实是有用意的 **这个插件主要演示了在controller中如何调用插件数据的用法** 插件的定义中规中矩,建立config,建立了一个view 注意最后的返回值 ~~~ $this->assign('server_info', $info); return [ 'width' => 12, 'view' => $this->fetch('widget'), 'plugin' => 'SystemInfo' ]; ~~~ 插件的server_info是用在自己的模板中的 ~~~ <volist name="server_info" id="vo"> <li><em>{$key}</em> <span>{$vo}</span></li> </volist> ~~~ 最后的效果是在/admin/index/index.html的最下方 ![](https://box.kancloud.cn/67452f1de7acab57f88dd27a9845100e_943x364.png) #### **插件写好了 如何调用它呢?** 调用此插件的方法写在了 app\admin\controller\MainController.php的index方法中 该插件的return内容会在此处展现 ~~~ $dashboardWidgetPlugins = []; $hookResults = hook('admin_dashboard'); if (!empty($hookResults)) { foreach ($hookResults as $hookResult) { if (isset($hookResult['width']) && isset($hookResult['view']) && isset($hookResult['plugin'])) { //验证插件返回合法性 $dashboardWidgetPlugins[$hookResult['plugin']] = $hookResult; if (!isset($dashboardWidgets[$hookResult['plugin']])) { $dashboardWidgets[$hookResult['plugin']] = ['name' => $hookResult['plugin'], 'is_system' => 0]; } } } } $this->assign('dashboard_widget_plugins', $dashboardWidgetPlugins); ~~~ 其实就是调用了插件的adminDashboard方法 返回了一个数组 包含width view plugin 在view层 themes\admin_simpleboot3\admin\main\index.html中 ~~~ <foreach name="dashboard_widgets" item="vo"> <if condition="$vo.is_system"> <div class="grid-item col-md-12" data-system="1" data-widget="{$vo.name}"> <div class="dashboard-box">{:_get_system_widget($vo.name)}</div> </div> <else/> //这里走的else <present name="dashboard_widget_plugins[$vo['name']]"> <div class="grid-item col-md-{$dashboard_widget_plugins[$vo['name']]['width']}" data-system="0" data-widget="{$vo.name}"> <div class="dashboard-box">{$dashboard_widget_plugins[$vo.name]['view']}</div> </div> </present> </if> </foreach> ~~~