控制器
插件的控制放在插件目录下的controller文件夹下,控制器命名规范请参考ThinkPHP5.0文档。
如果插件有后台管理功能,除了可以在插件入口文件定义管理界面的字段信息,然后由系统生成管理界面外,也可以自己创建页面。
但必须写在Admin控制器的index方法内。
plugins [所有插件目录]├─HelloWorld [插件目录,插件名为首字母大写的驼峰式]│ ├─controller [插件控制器目录]│ │ Admin.php [插件控制器,自定义后台管理都在这里,可以建立其他控制器]
在Admin.php的代码如下:
namespace plugins\HelloWorld\controller;use app\common\builder\ZBuilder;use app\common\controller\Common;/*** 插件后台管理控制器* @package plugins\HelloWorld\controller*/class Admin extends Common{/*** 插件管理页* @return mixed*/public function index(){// 用TableBuilder渲染模板return ZBuilder::make('table')->setPageTitle('数据列表')->setSearch(['id' => 'ID', 'said' => '名言', 'name' => '出处'])->addColumns([['id', 'ID'],['said', '名言', 'text.edit'],['name', '出处'],['status', '状态', 'switch'],['right_button', '操作', 'btn']])->setTableName('plugin_hello')->fetch();}}
只要在Admin控制器内有index方法,那么点击插件管理按钮,系统会优先执行该方法,而不会自动创建管理页面。
在自定义的管理界面添加按钮,按钮的链接可以使用plugin_url方法来调用插件控制器内的方法,比如:
$btnOne = ['title' => '自定义按钮1','icon' => 'fa fa-list','href' => plugin_url('HelloWorld/Admin/testTable'),'target' => '_blank',];
表示调用HelloWorld插件的Admin控制器的testTable方法。
自定义模板" class="reference-link">自定义模板
自定义模板有两种方法,一种是使用ThinkPHP的fetch()方法,一种是只用系统的pluginView方法。
使用$this->fetch()需要指定模板文件的完整路径,如:
return $this->fetch(config('plugin_path'). 'HelloWorld/view/index.html');
或者使用pluginView方法,默认加载插件view目录下与当前方法名一致的模板文件。
return $this->pluginView();
也可以指定模板名称
return $this->pluginView('index'); // 加载插件view目录下的index.html模板文件
也可以指定模板后缀
return $this->pluginView('index', 'tpl');
