[TOC]
## 路由设置
- 以下常规路由和插件路由效果是等效的
- tpl常规路由设置前面必须加冒号和插件路径
#### 常规路由
在/config/domains.php中加入
```
// 插件示例
'plu.tphp.com' => [
// 需要指定插件路径 tphp/demo
// 或者使用 'tpl' => ':tphp.demo.www',
'tpl' => ':tphp/demo/www',
'conn' => 'demo',
'icon' => 'static/favicon.ico',
'title' => 'TPHP插件开发'
],
```
#### 插件路由
- 这里以目录: tphp/demo 为例, 可以随便设置,但必须是二级
- /html/plugins/tphp/demo/config/domains.php
- /html/plugins/tphp/demo/html/www/data.php
- 这两个文件内容会进行合并
- data.php 文件字段优先于 domains.php
- 如果需要 domains.php 优先,data.php文件字段前加冒号 ":" 即可
设置文件/html/plugins/tphp/demo/config/domains.php内容如下
```
<?php
return [
'plu_test.tphp.com' => [
// 无需指定插件路径 tphp/demo
// 也可以设置但不建议: ':tphp.demo.www'
// 目录层数不限,如: www.test
// 指向的模板根路径为: /html/plugins/tphp/demo/html/www/test
// 实际模板根路径: /html/plugins/tphp/demo/html/www
'tpl' => 'www',
'conn' => 'demo',
// 真实路径: /html/plugins/tphp/demo/static/favicon.ico
// 软连接路径: /public/static/plugins/tphp/demo/favicon.ico
'icon' => 'static/plugins/tphp/demo/favicon.ico',
'title' => 'TPHP插件开发',
'test' => 'test',
'test2' => 'test2'
],
// 与 plu_test.tphp.com 效果等效
'plu.tphp.com' => [
// 也可以使用其他插件中的目录,但不建议
// 建议在当前插件中直接使用 'tpl' => 'www' 就可以了
'tpl' => ':tphp.demo.www',
'conn' => 'demo',
// 下面和 'conn' => 'demo' 等效
// 'conn' => [
// 'driver' => 'mysql',
// 'host' => '127.0.0.1',
// 'database' => 'demo',
// 'username' => 'root',
// 'password' => 'root',
// 'charset' => 'utf8',
// 'collation' => 'utf8_unicode_ci',
// ],
// 冒号 ":" 表示指向当前插件路径
// 实际指向路径:static/plugins/tphp/demo/favicon.ico
'icon' => ':favicon.ico',
// 'title' => 'TPHP插件开发',
'test' => function () {
return 'test';
},
'test2' => 'test2',
// // src目录示例
// 'routes' => [
// 'get' => [
// // 访问: http://plu.tphp.com/my/web 可以看到效果
// // 文件路径: /html/plugins/tphp/demo/src/Test.php
// 'my/web' => 'My\Web\Test@test'
// ]
// ],
],
];
```
设置文件/html/plugins/tphp/demo/html/www/data.php内容如下(模板根路径, 非插件模式也可以用)
```
<?php
// 处理 tpl 配置无效外,其他字段(包括自带如: title)都会被设置
// 注:冒号在domains.php中字段使用无效
return [
// 因为 domains.php 中存在字段 test 所以不显示
':test' => '测试 - 不会覆盖',
'test2' => '测试2 - 被覆盖了',
'test3' => '测试3 - 新字段',
// 因为 domains.php 中不存在字段 test4 所以显示
':test4' => '测试4 - 新字段'
];
```
## 页面设置
#### layout设置
设置文件/html/plugins/tphp/demo/html/www/layout/public/tpl.blade.php内容如下
```
<!DOCTYPE html>
@php
// 实际效果: <script src="http://plu.tphp.com/static/plugins/tphp/demo/jquery.min.js"></script>
// 在当前插件中寻找文件, 路径为: /html/plugins/tphp/demo/static/jquery.min.js
$plu->js('@jquery.min.js');
@endphp
<html lang="zh-CN">
<head>
</head>
<body>
{!! $__tpl__ !!}
</body>
</html>
```
#### 默认页设置
设置文件/html/plugins/tphp/demo/html/www/index/tpl.blade.php内容如下
```
欢迎使用TPHP插件开发!
```
现在就可以访问页面了 [http://plu.tphp.com/](http://plu.tphp.com/)
![](/static/plugins/tphp/help/plugins/index.png)
#### 获取路由信息
设置文件/html/plugins/tphp/demo/html/www/index/domain/_init.php内容如下
```
<?php
return function () {
dump(\Tphp\Config::$domain);
dump(config('database.connections'));
};
```
- 数组 conn 会进行转化并自动设置到主配置 database.connections 中
打开网址[http://plu.tphp.com/index/domain](http://plu.tphp.com/index/domain)获得如下效果![](/static/plugins/tphp/help/plugins/index_domain.png)
- 然后就可以不离开插件目录开发新项目了
- 插件示例目录:/html/plugins/tphp/demo
#### 插件优势
- 一插件一世界,可以在一个插件内创建无数个项目
- 但不建议所有的项目都放在一个插件内,这样失去了插件的意义
- 建议同一类型的项目或是同一个项目多分支放入一个插件中开发
- 插件与插件之间可以相互调用的,每个插件都是全局插件,调用非常方便