视图实例化
1)加载页面
return $this->fetch(参数1, 参数2, 参数3, 参数4);
// 参数1(字符串):模板渲染
// 参数2(数组):模板赋值
// 参数3(数组):模板替换
// 参数4(数组)
注:使用fetch方法需继承Controller类
2)模板赋值
a.通过系统控制器Controller类的fetch()方法进行赋值
$name = "wjc";
$this->assign('name', $name);
reutrn view();
b.通过fetch()方法赋值
$name = "wjc";
return fetch("", ["name"=>$name]);
3)模板替换(即对引入文件路径的统一操作)
a.全局替换(app\config.php)
'view_replace_str' => [
'__HMOE__'=>'/static/home/public',
'__ADMINS__'=>'/static/admin/public'
],
b.部分替换通过fetch()方法
return $this->fetch('', [], ['__HMOE__'=>'/static/home/public']);
4)模板渲染
a.加载当前模块所对应方法名的.html文件
return $this->fetch('index');
b.加载User控制器下的index.html
return $this->fetch('User/index');
模板
1)模板标签
a.普通标签(app\config\template)
// 模板引擎普通标签开始标记
'tpl_begin' => '{',
// 模板引擎普通标签结束标记
'tpl_end' => '}',
b.页面中使用
<h2>{$str}</h2>
a.标签库定界符
// 标签库标签开始标记
'taglib_begin' => '{',
// 标签库标签结束标记
'taglib_end' => '}',
页面中使用(例)
{for start="1" end="10"}
{$i}
{/for}
2)输出变量
a.分配并使用字符串
//控制器中
$this->assign("str", "好好学习天天向上");
//页面中
<h2>{$str}</h2>
b.分配并使用数组
//控制器中
$data = [
"name"=>"张三",
"age"=>18,
"sex"=>"男"
];
$this->assign("data", $data);
//页面中
<h2>{$data.name}</h2>
<h2>{$data.age}</h2>
<h2>{$data.sex}</h2>
3)使用函数对数据进行处理
//对数据进行md5加密
<h2>{$pass | md5}</h2>
//对时间进行格式化处理
<h2>{$time | date="Y-m-d H:i:s", ###}</h2>
//对数据进行多个函数处理(此处是加密|大写|截取字符串从0开始长度为10)
<h2>{$pass|md5|strtoupper|substr=0,10}</h2>
//也可以直接通过:号直接使用函数对数据进行函数处理
<h2>{:md5($pass)}</h2>
<h2>{:date('Y-m-d H:i:s')}</h2>
4)默认值,即为输出的变量设置默认值
<h2>{$name|default="wjc"}</h2>
5)三元运算符
//可以带条件
<h2>{$status==1?'正常':'错误'}</h2>
//可以不带条件
<h2>{$status?'正常':'错误'}</h2>
6)运算符
//实现加减乘除以及取余操作
<h2>{$a}+{$b}={$a+$b}</h2>
<h2>{$a}-{$b}={$a-$b}</h2>
<h2>{$a}*{$b}={$a*$b}</h2>
<h2>{$a}/{$b}={$a/$b}</h2>
<h2>{$a}%{$b}={$a%$b}</h2>
7)使用{literal}标签原样输出字符
{literal}
<h2>hello {$name}</h2>
{/literal}
8)系统变量
a.系统变量
<h1>{$_GET['id']}</h1>
<h1>{$Think.get.id}</h1>
<h1>{$_SERVER['HTTP_HOST']}</h1>
<h1>{$Think.SERVER.HTTP_HOST}</h1>
注:tp5支持输出 $_SERVER、$_ENV、 $_POST、 $_GET、 $_REQUEST、$_SESSION和 $_COOKIE变量。
b.常量信息的输出
<h1>{$Think.const.app_path}</h1>
<h1>{$Think.think_path}</h1>
<h1>{$Think.Is_WIN}</h1>
<h1>{$Think.THINK_VERSION}</h1>
c.配置文件信息的输出(具体可更据配置文件配置文件app\config.php输出所需要的信息)
<h2>{$Think.config.default_lang}</h2>
9)模板的注释
//和大多编程语言相同
<h1>{//$_GET['id']}</h1>
<h1>{/*$Think.get.id*/}</h1>
注:此处不可直接使用网页的注释方式!
10)包含文件,即可以通过将网页中相同的部分单独新建一个网页存放,然后其他网页可以通过它引用,即提高了网页的可维护性
//包含单个文件
{include file="public/header"}
//也可以包含多个文件
{include file="public/header, public/header"}
11)模板布局
a.通过在视图目录(D:\htdocs\tp5\application\admin\view)下新建layout.html(名字可任取)
b.在layout.html中保留网站所需要的公共部分代码,删除非公共部分,并用{CONTENT}代替非公共部分(注意:该标签只能存在一个!)
c.页面中引入模板
//映入模板布局
{layout name="layout"/}
//非公共区域的内容
<div class="col-md-10">
<div class="jumbotron">
<img src="__ADMINS__/img/4.jpg"height="310px" width="100%" alt="">
</div>
</div>
模板继承
1)在视图下新建layout.html文件
2)在layout.html文件中对页面进行分割
<!--导航区域-->
{block name="nav"}
{/block}
<!-- 菜单区域 -->
<div class="row body">
{block name="menu"}
{/block}
<!-- 内区域容 -->
{block name="main"}
{/block}
</div>
</div>
3)在网站页面中使用{extend name=“模板名”/}标签
,然后在相应的区域内引用所需要的页面。
{block name="nav"}
{include file="public/nav"/}
{/block}
{block name="menu"}
{include file="public/menu"/}
{/block}
{block name="main"}
<div class="col-md-10">
<div class="jumbotron">
<img src="__ADMINS__/img/4.jpg"height="310px" width="100%" alt="">
</div>
</div>
{/block}
//注:在使用模板的网页中可以声明相应的区域名,也可以不声明,具体可以查看手册。