Smarty流程控制,自定义函数,模板继承,文件包含总结

原创 2018-12-04 20:12:10 302
摘要:一.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
老师总结:恩!写的很不错哦!总结的很清楚!课后要多多练习!继续加油吧!

发布手记

热门词条