插件的控制放在插件目录下的controller
文件夹下,控制器命名规范请参考ThinkPHP5.0文档。
如果插件有后台管理功能,除了可以在插件入口文件定义管理界面的字段信息,然后由系统生成管理界面外,也可以自己创建页面。
但必须写在Admin
控制器的index
方法内。
plugins [所有插件目录]
├─HelloWorld [插件目录,插件名为首字母大写的驼峰式]
│ ├─controller [插件控制器目录]
│ │ Admin.php [插件控制器,自定义后台管理都在这里,可以建立其他控制器]
在Admin.php
的代码如下:
namespace pluginsHelloWorldcontroller;
use appcommonuilderBuilder;
use appcommoncontrollerCommon;
/**
* 插件后台管理控制器
* @package pluginsHelloWorldcontroller
*/
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
方法。
自定义模板
自定义模板有两种方法,一种是使用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");