【Smarty】Smarty引用、常用内置变量、判断、循环、JavaScript脚本

在《【Smarty】Smarty的下载、配置与Helloworld》(点击打开链接)说明了Smarty的基本运行方式,这里再进一步说明,Smarty的条件结构、循环结构怎么使用、Session怎么取还有一些常用的小问题之类的。

用一个例子来说明问题,比如Smarty中有一个c.php,其代码如下:

<?php
include "Smarty.inc.php";//使用Smarty特性
$_SESSION["username"]="呵呵!";
$smarty->assign("arr",array(array("id"=>1000, "name"=>"a"),array("id"=>1001, "name"=>"b"),array("id"=>1002, "name"=>"c")));
$smarty->display("v.html");
?>

这个页面声明了一个key为username,值为“呵呵”的Session,同时注意到,由于Smarty特性的存在,在c.php中使用session并不需要session_start();

之后,再为arr这个变量指派一个二维数组,基本上,在实际的开放中,用sql查询出来的结果就是如此这样的二维数组来的。

最后指明这个c.php的模板页面是v.html,当然最终用户还是要访问这个c.php,v.html的代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Smarty引用、常用内置变量、判断、循环、JavaScript脚本</title>
</head>

<body>
	{include file="header.html"}
    <p>当前session为username的东西为:{$smarty.session.username}</p>
    <p>循环输出一个二维数组:</p>
    <table border="1">
    	<tr>
			<td>Id</td><td>name</td>
        </tr>
    	{foreach from=$arr item=a name=stat}
			{if $smarty.foreach.stat.index % 2 == 0}
            <tr style="background-color:#CCC">
            {else}
            <tr>
            {/if}
                <td>{$a.id}</td><td>{$a.name}</td>
            </tr>
        {/foreach}
    </table>
</body>
</html>
{literal}
<script>
	function f(){
		alert("Smarty模版中的javascript函数~");
	}
	f();
</script>
{/literal}

运行结果如下:

【Smarty】Smarty引用、常用内置变量、判断、循环、JavaScript脚本_第1张图片

从上述的v.html可以看出Smarty中的引用、常用内置变量、判断、循环、JavaScript脚本是怎么使用的。

(1)首先关于“引用”,

这个v.html通过{include file="header.html"},引入同目录下的header.html,这个header.html的代码很简单,就一句话:

<h1 style="color:#F00">我是header.html中的内容</h1>

如果这行html会在你的网站出现多次,那么,你可以通过Smarty的引用,不用造成多次重写。

(2)所谓的“常用内置变量”就是怎么取session。

上述的v.html通过{$smarty.session.username}获取session中key为username的值。

同时Smarty还有其它的常用内置变量,如:

1、获取URL中的GET数据 ($_GET) http://127.0.0.1/test/index.php?page=foo,可以通过{$smarty.get.page}拿到page的值,运行结果为foo

2、获取POST数据 ($_POST['page']):{$smarty.post.page}

3、获取cookies"username" ($_COOKIE['username']):{$smarty.cookies.username}

4、获取"SERVER_NAME"属性 ($_SERVER['SERVER_NAME']):{$smarty.server.SERVER_NAME}

5、通过request获取"username":{$smarty.request.username}

等等,同时还可以通过{*Smarty 注释*}写一些不会渲染到网页源代码的PHP注释

(3)所谓的“常用内置变量、判断、循环”就是if与foreach结构的使用。

上述v.html使用一个foreach取出在c.php指派给$arr变量的二维数组,同时利用if结构配合foreach结构产生一个灰白相间的表格。

模板文件中可以使用if else等判断语句,即可以将一些逻辑程序放在模板里。"eq","ne", "neq", "gt", "lt","lte", "le", "gte" "ge","is even", "is odd", "is not even", "is notodd", "not", "mod", "div by", "evenby", "odd by","==","!=",">","<","<=",">="这些是if中可以用到的比较。看看就能知道什么意思吧。

(4)最后是Smarty中的JavaScript脚本问题。

Smarty将所有大括号{}里的东西都视为自己的逻辑程序,于是我们在网页中想插入javascrīpt函数就需要literal的帮忙了,literal的功能就是忽略大括号{}。

也就是说,在Smarty中的JavaScript,应该被literal标签括起来。

你可能感兴趣的:(PHP,标签,smarty,模板引擎,静态化)