首页> 实战笔录 >PHP开发笔记 >ThinkPHP ThinkPHP
TP5.0视图和模板
作者:小萝卜 2018-07-10 【 TP5 】 浏览 8291
简介tp5.0TP5.0视图和模板
1.加载页面
1.继承系统控制器类 return $this->fetch(参数1,参数2,参数3,参数4); 参数1(字符串):模板渲染 参数2(数组):模板赋值 参数3(数组):模板替换 2.使用助手函数 return view(); 参数与fetch相同 3.使用view类(不建议使用) $view=new View(); return $view->fetch();
2.模板赋值
1.控制器类中的assign方法 $this->assign('name',$name); $this->assign('city',$city); $this->assign(['name'=>$name,'city'=>$city]); return view(); 2.通过fetch方法 return $this->fetch('',['name'=>$name,'city'=>$city]); 3.助手函数 return view('',['name'=>$name,'city'=>$city]); 4.对象赋值 $this->view->name="甜甜"; $this->view->city="太原"; return view();
3.模板替换
1.配置文件更改(全局替换,所有页面中都被替换)(config文件中) // 视图输出字符串内容替换 // 只有页面被替换,也就是在php页面中获取不到__HOMES__ 'view_replace_str' => [ '__HOMES__'=>'/static/home/public' ], 2.部分替换 1.fetch方法 // fetch参数:页面,变量分配,视图输出字符串内容替换 return $this->fetch('',[],['__HOMES__'=>'/static/home/public']); 2.助手函数 return view('',[],['__HOMES__'=>'/static/home/public']);
4.模板渲染
1.默认加载当前模块,当前控制器,当前方法对应的页面 return $this->fetch(); 2.指定加载的页面 // 加载当前模块,当前控制器下,用户定义的页面 return $this->fetch('jiazai'); // 加载当前模块,user控制器下 jiazai页面 return $this->fetch('user/jiazai');
二、模板
1.模板标签
1.普通标签(删除了runtime下的temp下的缓存文件再测试)
// 模板引擎普通标签开始标记 'tpl_begin' => '{', // 模板引擎普通标签结束标记 'tpl_end' => '}',1234
2.标签库标签(删除了runtime下的temp下的缓存文件再测试)
// 标签库标签开始标记 'taglib_begin' => '}', // 标签库标签结束标记 'taglib_end' => '{', {for start="1" end="10"} {$i} {/for}
2.输出变量
1.字符串
$this->assign("str","甜甜"); {$str} 12
2.数组
$data=[ 'name'=>'张三', 'age'=>18, 'sex'=>'男'];$this->assign("data",$data); {$data['name']} {$data['age']} {$data['sex']}
3.使用函数
//1.使用竖线,参数写在等于号后面 {$data.name|md5} {$time|date="y-m-d H:i:s",###} {$name|md5|strtoupper|substr=0,10} //2.冒号开始 {:md5($pass)} {:date('Y-m-d H:i:s',$time)}
4.默认值
{$user.nickname|default="这家伙很懒,什么也没留下"}1
5.三元运算符
{$status? '正常' : '错误'} {$status>2? '正常' : '错误'}12
6.算数运算符
{$a}+{$b}={$a+$b} {$a}-{$b}={$a-$b} {$a}*{$b}={$a*$b} {$a}/{$b}={$a/$b} {$a}%{$b}={$a%$b} {$a++} {$b--}
在使用运算符的时候,不再支持常规函数用法,例如:
{$user.score+10} //正确的{$user['score']+10} //正确的{$user['score']*$user['level']} //正确的{$user['score']|myFun*10} //错误的{$user['score']+myFun($user['level'])} //正确的
7.原样输出
{literal} Hello,{$name}!{/literal}
8.系统变量
1.系统变量($Think开头) 支持输出 $_SERVER、$_ENV、 $_POST、 $_GET、 $_REQUEST、$_SESSION和 $_COOKIE变量。 {$_GET['id']} {$Think.get.id} {$_SERVER['HTTP_HOST']} {$_SERVER.HTTP_HOST} {$Think.SERVER.HTTP_HOST}2.常量输出(常量详见附录常量参考)
{$Think.const.app_path} {$Think.const.ds} {$Think.const.think_path} {$Think.const.is_win} {$Think.const.THINK_VERSION}3.配置文件输出(查看配置文件)
{$Think.config.app_namespace} {$Think.config.default_lang}
9.请求参数
支持直接使用request对象
{$Request.get.id} {$Request.param.name}
以$Request.开头的变量输出会认为是系统Request请求对象的参数输出。
支持Request类的大部分方法,但只支持方法的第一个参数。
10.模板注释
{/* 注释内容 */ } 或 {// 注释内容 } {/* 这是模板 注释内容*/ }
11.页面包含(可以包含多次)
{include file='Public/header'} body {include file='Public/footer'}
12.模板布局
1.在视图目录下新建文件layout.html(app\admin\view) 2.在layout页面中将所有的公共页面保留,非公共页面使用{__CONTENT__}替代(__CONTENT__只能存在一个) 3.页面中引入模板布局{layout name="layout" /}+非公共区域内容
13.模板继承
1.在视图目录下新建base.html 2.在base.html中对页面进行分割 {block name="nav"}{/block} {block name="menu"}{/block} {block name="main"}{/block} {block name="footer"}{/block}3.使用继承
{extend name="base" /} {block name="nav"} {include file="public/header" /} {/block} {block name="menu"} {include file="public/menu" /} {/block} {block name="main"} {include file="public/content" /} {/block} {block name="footer"} {include file="public/footer" /} {/block}
14.内置标签
1.volist循环 {volist name="data" id="val" offset="5" length="3"} {$key}:{$val.id}:{$val.name} {/volist} //区分奇数偶数 {volist name="data" id="val" mod="2" empty="暂时没有数据"} {eq name="mod" value="0"} {$key}:{$val.id}:{$val.name} {/eq} {eq name="mod" value="1"} {$key}:{$val.id}:{$val.name} {/eq} {/volist} name 需要遍历的数据 id 类似于foreach中的value offset 截取数据的起始位置 length 截取数据的个数 mod 奇数偶数 empty 数据为空时使用 key 编号2.foreach循环 {foreach name="data" item="val"}
{$key}{$val.id}{$val.name}
{/foreach} name 需要遍历的数据 item 类似于foreach中的value key 类似于foreach中的key3.for循环 start 开始值 end 结束值 comparison 比较条件(参看下表),默认lt step 步数 name 循环变量(默认i) //正序 {for start="0" end="10" comparison="elt" step="2" name="i"} {$i} {/for} //倒叙 {for start="10" end="0" comparison="gt" step="-1" name="i"} {$i} {/for}标签 | 含义 |
---|---|
eq或者 equal | 等于 |
neq 或者notequal | 不等于 |
gt | 大于 |
egt | 大于等于 |
lt | 小于 |
elt | 小于等于 |
heq | 恒等于 |
nheq | 不恒等于 |
4.比较标签 {eq name="a" value="10"}正确{/eq} {neq name="a" value="10"}正确{/eq} {gt name="a" value="10"}正确{/eq} {egt name="a" value="10"}正确{/eq} {lt name="a" value="10"}正确{/eq} {elt name="a" value="10"}正确{/eq} {heq name="a" value="10"}正确{/eq} {nheq name="a" value="10"}正确{/eq}5.条件判断 {switch name="week"} {case value='1'} 周一{/case} {case value='2'} 周二{/case {case value='3'} 周三{/case} {case value='4'} 周四{/case} {case value='5'} 周五{/case} {case value='6'} 周六{/case} {default /} 周日 {/switch}6.in和notin比较类似 {in name="week" value="0,1,2,3,4,5,6"} 合法的数据 {else /} 不合法的数据 {/in}7.between和notbetween {between name="week" value="0,6"} 合法数据 {else /} 不合法的数据 {/between}8.原生php {php} echo "123"; {/php} 9.嵌套使用 //隔行变色 {volist name="data" id="val"} {if condition="$key % 2"}
{$key}{$val.id}{$val.name} {else /}
{$key}{$val.id}{$val.name} {/if} {/volist} //三行变色 {volist name="data" id="val"} {php} $sw=$key%3; {/php} {switch name="sw"} {case value="0"}
{$key}{$val.id}{$val.name} {/case} {case value="1"}
{$key}{$val.id}{$val.name} {/case} {case value="2"}
{$key}{$val.id}{$val.name} {/case} {/switch} {/volist} //多维数组遍历 {volist name="type" id="val"}
{$val.name}
{volist name="val.product" id="goods"}{$goods.name}{$goods.price} {/volist} {/volist}
很赞哦! (1)
上一篇:tp5随机查询几条数据