摘要:一.Smarty流程控制 1.1模板中定义变量 {assign var="变量名" value="变量值"} {assign var="name" value="大老王&q
一.Smarty流程控制
1.1模板中定义变量 {assign var="变量名" value="变量值"}
{assign var="name" value="大老王"} 1.2模板中定义变量简写 {$变量 = "变量值"}
{$name = "隔壁老王"} 2.1模板中分支处理 {if} {else} {/if}
{* 判断是否是奇数? *}
{$data = 31}
{if $data is odd}
<h4>{$data}是奇数</h4>
{else}
<h3>{$data}是偶数</h3>
{/if} 2.2多分支 {if} {elseif} {else} {/if}
{$grade = 55}
{if $grade > 80}
<p>优秀</p>
{elseif $grade >= 60}
<p>逃出升天</p>
{else}
<p style="color:rosybrown;">挂科比比不挂柯南</p>
{/if} 3.for()循环 {for $i=初始化 to 结束值 step 步长} {forelse}出错了执行 {/for}
{for $i=11 to 10 step 3}
<p>我是第{$i}名</p>
{forelse}
<span style="color:fuchsia">条件错误了</span>
{/for} 4.while()循环 {$i=初始化} {while ($i条件)} {$i++} {/while}
{* 4.while()循环 *}
<p>
{$i=0}
{while ($i<10)}
{$i++},
{/while}
</p> 5.foreach 遍历数组 {foreach $数组 as 键名=>值} {foreachelse}没数据执行的{/foreach}
{$data = ['name'=>'小王','age'=>26,'sex'=>'男','salary'=>8888]}
{foreach $data as $key=>$value}
{$key}====>{$value}<br>
{/foreach}
<ul>
{foreach $mobile as $value}
<li>品牌:{$value.brand},型号:{$value.model},价格:{$value.price},</li>
{foreachelse}
<h3 style="color:rebeccapurple">不给你看!!!(其实没有数据)</h3>
{/foreach}
</ul> 6.1直接在模板中定义函数:直接用默认值 {function name="函数名" 变量名="变量值"}...{/function} 调用:{call name="函数名" 变量名="变量值"}
{function name="hello" site="php中文网"}
<p>欢迎来到{$site}学习学习</p>
{/function}
{* 调用自定义的函数 *}
{call name="hello"}
{call name="hello" site="www.php.cn"} 6.2自定义函数简写 {function 函数名 变量名="变量值"} 调用:{函数名 变量名="变量值"}
{function hello2 site="php中文网"}
<p>我是({$site})PHP中文网的学生,我{$site}要简写函数</p>
{/function}
{* 调用简写 *}
{hello2 site="www.php.cn"}二.Smarty文件包含
1.文件包含:{include file="文件路径"}
<!--这是模板文件demo6.html包含header.html-->
{include file="public/header.html" pageTitle="新建的文档标题"}
<!--这是被包含的header.html-->
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>{$pageTitle}</title>
</head>
<body>2.如果被包含的文件不想马上显示,或者想多处显示 {include file="文件路径" assign = "变量名"}
{include file="public/title.html" assign = "title" }
{$title}
......
{$title}3.可以向指定文件发送变量 {include file="文件路径" 变量名= "变量值"}
{include file="public/title.html" assign = "title" singer = "陈羽凡"}
{$title}
<p>今日(12月4日),新京报记者独家获悉,歌手陈羽凡被石景山分局责令接受社区戒毒三年。
据知情人透露,这意味着三年内,若陈羽凡不定期去社区进行尿检和谈话,或者在三年内复吸,
将被执行强制戒毒。
</p>
<!--title.html-->
<h3>歌手<span style="color:lightgreen">{$singer}</span>被认定吸毒成瘾 警方责令社区戒毒3年</h3>三.Smarty模板继承
* 模板继承的步骤
* 1.需要创建一个父模板,也叫基础模板.布局文件,主要是供其他模板继承
* 2.布局文件本身并不对外提供访问
* 3.约定的布局文件名称是:layout.html
之前没有布局文件的时候,模板加载顺序是:demo7.html
如果有了布局文件layout.html,模板加载顺序发生了变化:layout.html-->demo7.html
1.继承布局文件:layout.html {extends file="布局文件名"} {block name="区块名称"} 区块内容{/block}
{extends file="layout.html"}
<!--layout.html文件-->
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>{block name="title"}页面标题{/block}</title>
</head>
<body>
{block name="nav"} 导航 {/block}
{block name="content"} 主体 {/block}
</body>
</html> 2.实例化在layout.html中定义的区块
{block name="title"}我是一个大标题:模板继承的案例(安利){/block}
{block name="nav"}
<a href="#">首页</a>|
<a href="#">公司新闻</a>|
<a href="#">公司业绩</a>|
<a href="#">公司环境</a>|
<a href="#">联系我们</a>
{/block} 3.引用布局文件区块中的内容(父级) {$smarty.block.parent}
{block name="content"}
<p>今日(12月4日),新京报记者独家获悉,歌手陈羽凡被石景山分局责令接受社区戒毒三年。
据知情人透露,这意味着三年内,若陈羽凡不定期去社区进行尿检和谈话,或者在三年内复吸,
将被执行强制戒毒。
</p>
<p>今日,新京报记者独家获悉的“社区戒毒决定书”显示,查明陈涛(陈羽凡)于2018年11月24日零时许,
在其家中以“烫吸”的方式吸食毒品冰毒的违法事实。根据《中华人民共和国禁毒法》第三十三条之规定,
决定责令违法行为人接受社区戒毒三年,从2018年12月17日至2021年12月16日。
</p>
<p style="color:royalblue">{$smarty.block.parent}</p> <!--主体-->
{/block}总结起来Smarty 让html和php混编更方便了
批改老师:韦小宝批改时间:2018-12-05 09:14:28
老师总结:恩!写的很不错哦!总结的很清楚!课后要多多练习!继续加油吧!