[TOC]
## HTML
- 文件名称:tpl.blade.php
> 语法完全源自于Laravel模板文件,更多语法请参考[Laravel](https://learnku.com/docs/laravel)说明文档
> 前端html开发文件(可单独创建,前端开发者无需关心后端代码实现)
> 自定义Layout布局或默认布局
> 让分页更智能
## 源码示例和分析
#### 开始例子
设置文件/html/www/demo/test/html/demo1/tpl.blade.php内容如下
```
Hello TPHP !
```
打开网址[http://demo.tphp.com/test/html/demo1](http://demo.tphp.com/test/html/demo1)获得如下效果

生成源码如下

- 此时Layout默认指向路径为/html/www/layout/public/tpl.blade.php (已存在)
#### 去除layout
设置文件/html/www/demo/test/html/demo2/tpl.blade.php内容如下
```
Hello TPHP !
```
设置文件/html/www/demo/test/html/demo2/data.php内容如下
```
<?php
return [
'layout' => false
];
```
打开网址[http://demo.tphp.com/test/html/demo2](http://demo.tphp.com/test/html/demo2)获得如下效果

生成源码如下

- 此时可以看到HTML源代码已经原样输出
#### 数据库示例
设置文件/html/www/demo/test/html/demo3/data.php内容如下
```
<?php
return [
'type' => 'sql',
'config' => [
'table' => 'area',
'conn' => 'demo',
],
// 是否强制分页,默认不设置,默认根据URL参数p=1自动判断设置
// 'isPage' => true
];
```
设置文件/html/www/demo/test/html/demo3/_init.php内容如下
```
<?php
return function (){
// 如果下面这段不注释则显示 '城市ID',如果注释则显示 'CITY ID'
$this->setView('city_id', '城市ID');
// 替换方案设置,加了冒号表示优先使用其他设置的 city_id
$this->setView(':city_id', 'CITY ID');
$this->setView('city_title', '城市名');
};
```
设置文件/html/www/demo/test/html/demo3/tpl.blade.php内容如下
```
<div>城市列表,当前列表数量{{count($_)~~</div>
<table border="1" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th>{{$city_id~~</th>
<th>{{$city_title~~</th>
</tr>
</thead>
<tbody>
@foreach($_ as $key=>$val)
<tr>
<td>{{$val['id']~~</td>
<td>{{$val['title']~~</td>
</tr>
@endforeach
</tbody>
</table>
```
打开网址[http://demo.tphp.com/test/html/demo3](http://demo.tphp.com/test/html/demo3)获得如下效果
- $this->setView('city_id', 参数);中的参数可以是对象、数组、字符串、数字等。和Laravel中的view('tpl', '参数')中的参数是一样的效果。
- $_ 是数据库查询最终数据列表
#### 分页
除了tpl.blade.php文件外,其他设置和demo3一样
设置文件/html/www/demo/test/html/demo4/tpl.blade.php内容如下
```
<div>城市列表,当前列表数量{{count($_)~~</div>
<table border="1" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th>{{$city_id~~</th>
<th>{{$city_title~~</th>
</tr>
</thead>
<tbody>
@foreach($_ as $key=>$val)
<tr>
<td>{{$val['id']~~</td>
<td>{{$val['title']~~</td>
</tr>
@endforeach
</tbody>
</table>
{!! page(0, ['xx', 'ff'], 'uuu') !!}
{!! page(0, ['xx'], 'xxx') !!}
{!! page('simple', ['yy'], 'uert') !!}
{!! page('Digg', null, null) !!}
{!! page('Yahoo') !!}
{!! page(['Yahoo', 'Simple']) !!}
{!! page(['Simple', 'Yahoo']) !!}
{!! page(['Black', 'Simple'], ['i']) !!}
```
打开网址[http://demo.tphp.com/test/html/demo4?psize=3&p=3](http://demo.tphp.com/test/html/demo4?psize=3&p=3)获得如下效果
- URL参数: p是页数,psize是每页列表数(默认为20)
- 分页模板路径: /html/page
page(参数1,参数2,参数3)参数详解
- 参数1
- - 当为0是默认路径指向:/html/page/default
- - 当为字符串时路径指向:/html/page/字符串
- - 当为数组时['字符串1', '字符串2']\: 字符串1为HTML模板代码路径,字符串2为CSS样式路径,当字符串2不存在或未设置则使用字符串1样式路径,所以对应的HTML是/html/page/字符串1/tpl.blade.php,css是/html/page/字符串2/tpl.css
- 参数2:数组类型,代表URL参数传递的保留参数,比如设置为['name'],访问的页面是?p=1&name=tphp&value=ok,当跳转到第二页页面参数变为?p=2&name=tphp,其中name已经保留了,而value丢失
- 参数3:字符串类型,设置锚链接,当值为'tphp'时,访问第二页连接变为?p=2#tphp