smarty模板引擎
1、新建一个新项目smartyDemo
不使用thinkphp。仅仅是作为一个简单演示demo。
配置虚拟主机:

conf/extra/httpd-vhosts.conf:
#注意:要将下面4行注释掉 #<VirtualHost _default_:80> #DocumentRoot "${SRVROOT}/htdocs" #ServerName www.example.com:80 #</VirtualHost> # Add any other Virtual Hosts below <VirtualHost *:80> ServerName web.abc123.com DocumentRoot "D:/workspaces/phpDemo01/" <Directory "D:/workspaces/phpDemo01/"> #Options Indexes #AllowOverride All #Order Deny,Allow #Allow From All Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> # ServerName dummy-host2.example.com # ErrorLog "logs/dummy-host2.example.com-error.log" # CustomLog "logs/dummy-host2.example.com-access.log" common </VirtualHost> <VirtualHost *:80> ServerName web.abc456.com DocumentRoot "D:/workspaces/phpDemo01/smartyDemo/" <Directory "D:/workspaces/phpDemo01/smartyDemo/"> #Options Indexes #AllowOverride All #Order Deny,Allow #Allow From All Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> # ServerName dummy-host2.example.com # ErrorLog "logs/dummy-host2.example.com-error.log" # CustomLog "logs/dummy-host2.example.com-access.log" common </VirtualHost>
2、案例演示
<?php include("./libs/Smarty.class.php"); $smarty = new Smarty(); $smarty -> template_dir = "./template"; $smarty -> compile_dir = "./template_c"; $smarty -> assign('title', 'smarty标题'); $smarty -> assign('content', 'smarty内容'); $stu = array("id" => 1, "name" => "张三丰", "age" => 100); $smarty -> assign('stu', $stu); $smarty -> display('smarty01.html');
下载smarty:https://www.smarty.net/download,下载后解压,将lib文件夹的内容复制到本项目根目录下,并新建template和template_c两个文件夹。

index.php:
<?php include("./libs/Smarty.class.php"); $smarty = new Smarty(); $smarty -> template_dir = "./template"; $smarty -> compile_dir = "./template_c"; $smarty -> assign('title', 'smarty标题'); $smarty -> assign('content', 'smarty内容'); $stu = array("id" => 1, "name" => "张三丰", "age" => 100); $smarty -> assign('stu', $stu); $smarty -> display('smarty01.html');
template/smarty01.html:
<!DOCTYPE html>
<html>
<head>
<title>{$title}</title>
</head>
<body>
<h1>{$content}</h1>
{* 这是注释 *}
<ul>
<li>{$stu['id']}</li>
<li>{$stu['name']}</li>
<li>{$stu['age']}</li>
</ul>
<ul>
<li>{$stu.id}</li>
<li>{$stu.name}</li>
<li>{$stu.age}</li>
</ul>
</body>
</html>
浏览器输入http://web.abc456.com/index.php结果:

3、使用资源文件
新建资源文件configs/resource.conf:

在模板文件index.php中使用资源:
<!DOCTYPE html>
<html>
<head>
<title>{$title}</title>
</head>
<body>
<h1>{$content}</h1>
{* 这是注释 *}
<ul>
<li>{$stu['id']}</li>
<li>{$stu['name']}</li>
<li>{$stu['age']}</li>
</ul>
<ul>
<li>{$stu.id}</li>
<li>{$stu.name}</li>
<li>{$stu.age}</li>
</ul>
{* 引入资源文件 *}
{config_load file = "resource.conf"}
{#key1#}
{#key2#}
<br/>
{config_load file = "resource.conf" section="section1"}
{#key1#}
{#key2#}
</body>
</html>
4、内置函数if/else、foreach
index.php:
<?php include("./libs/Smarty.class.php"); $smarty = new Smarty(); $smarty -> template_dir = "./template"; $smarty -> compile_dir = "./template_c"; $smarty -> assign('title', 'smarty标题'); $smarty -> assign('content', 'smarty内容'); $stu = array("id" => 1, "name" => "张三丰", "age" => 100); $smarty -> assign('stu', $stu); // $smarty -> display('smarty01.html'); $smarty -> assign('score', "85"); $smarty -> assign('stuList', array( array("id" => 1, "name" => "张无忌", "age" => 30), array("id" => 2, "name" => "周芷若", "age" => 20), array("id" => 3, "name" => "赵敏", "age" => 20) )); $smarty -> display('smarty02.html');
模板smarty02.html:
<!DOCTYPE html>
<html>
<head>
<title>{$title}</title>
</head>
<body>
<h1>{$content}</h1>
{* 测试if/else *}
你的分数是:{$score}
你的等级:
{if $score > 100 || $score < 0} 分数错误
{elseif $score >= 90} A
{elseif $score >= 80} B
{elseif $score >= 70} C
{elseif $score >= 60} D
{else} E
{/if}
{* 测试foreach 一维数组 *}
<ul>
{foreach $stu as $k => $v}
<li>{$k}--{$v}</li>
{/foreach}
</ul>
{* 测试foreach 二维数组 *}
<table border = 1 cellspacing = '0' cellpadding = '10'>
<tr>
<td>编号</td>
<td>姓名</td>
<td>年龄</td>
</tr>
{foreach $stuList as $k => $v}
<tr>
<td>{$v.id}</td>
<td>{$v.name}</td>
<td>{$v.age}</td>
</tr>
{/foreach}
</table>
</body>
</html>
结果显示:

5、变量修饰
<!DOCTYPE html>
<html>
<head>
<title>{$title}</title>
</head>
<body>
{* 测试 *}
{$smarty.now}<br/>
{$smarty.now|date_format:'%Y-%m-%d %T'}<br/>
{$longStr}<br/>
{* UTF-8用三个字节表示一个汉字 *}
{$longStr|truncate:33}<br/>
{$longStr|truncate:33:'***'}
</body>
</html>
结果:

truncate的详细用法参考:
(1)https://blog.csdn.net/forest_fire/article/details/50943411
(2)https://blog.csdn.net/aidenliu/article/details/5653597
posted on 2019-04-23 21:14 wenbin_ouyang 阅读(496) 评论(0) 收藏 举报
浙公网安备 33010602011771号