【PHP高级】Smarty模板二


 

一、自定义变量

如何实现一个商城系统,在商品列表页面默认每行显示4件商品信息,管理员希望通过后台可以控制每行显示的商品数量,那么需要使用自定义变量。不是通过后台PHP注册,但是可以当作注册变量的来用。

语法:

定义 <{assign var=”变量名” value=”值”}>

取值只有 {$变量名}

重新放赋值,需要注册一个同名的变量<{assign var=”变量名” value=”值”}>

 

smarty注释

<{* 注释  *}>

 

数值类型的值进行数学运算重新赋值时不得加上单/双引号

<{assign var="t2" value="1"}>

原来的值:<{$t2}>

<br />

1的结果:

<{*注释:数值类型的值进行数学运算不能加单/双引号*}>

<{assign var="t2" value=$t2+1}>

<{$t2}>

 

二、运算符

支持所有的PHP运算符!!另外

eq 判断是否相等  ==

neqne 不相等  !=

lt 小于         <

lte 小于等于    <=

gt 大于         >

gte 大于等于    >=

is div by 被某数整除   %

is even 为偶数         %2==0

is odd 为奇数          %2!=0

 

三、流程控制

1、顺序结构

2、选择结构

语法:

<{if 条件表达式}>

XXX

<{elseif 条件表达式}>

xxxxx

<{else}>

XXXX

<{/if}>

3、循环结构

1)section

2)Foreach

 

四、案例:管理员在后台控制每行商品显示数量

后台页面:

<?php

//引入核心类库文件

include_once('libs/Smarty.class.php');

$smarty=new Smarty();

//定义配置

//用户访问的是后台页面,所以所有的路径都应该要以后台页面为参照物!!

$smarty->setTemplateDir('templates');//定义模板路径

$smarty->setCompileDir('template_c');//定义编译路径

$smarty->setConfigDir('config');//定义配置路径

$smarty->setCacheDir('cache');//定义缓存路径

$smarty->setLeftDelimiter('<{');//指定左定界符,避免和JS冲突

$smarty->setRightDelimiter('}>');

 

 

$temp=2;

$smarty->assign("temp",$temp);

//注册一个索引数组

$arr=array('a','b','c','d','e','f');

$smarty->assign('arr',$arr);

//开启调试 :    $smarty->debugging=true;

//自动整合前后台页面

$smarty->display('index2.tpl');

 

?>

 

前台页面:

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>无标题文档</title>

</head>

 

<body>

<{assign var='t1' value='a'}>    <{*赋值*}>

<{$t1}><{*取值*}>

 

<{assign var='t2' value='1'}><{*赋值*}>

<br>原来的值:<{$t2}><{*取值*}>

 

 

<{assign var='t2' value=$t2+1}><{*赋值,注意数值类型的值进行数学运算不能加单/双引号*}>

<br>1后的值:<{$t2}><{*取值*}>

<br>

 

使用选择结构:

<{if $temp gt 0}><{*大于*}>

$temp>0

<{elseif $temp eq 0 }><{*等于*}>

$temp=0

<{elseif $temp lt 0 }><{*小于*}>

$temp<0

<{/if}>

<br>

 

<{assign var='pic' value=0}>

<{foreach from=$arr item=v }>

<{$v}>   

 

<{assign var='pic' value=$pic+1}>

<{if $pic%3 eq 0}>

<br/>

<{/if}>

<{foreachelse}>  

 <font color="red" style="font-weight:bold;">数组为空</font>

 <{*smarty注释,数组为空时可以显示对应内容*}>

<{/foreach}>

</body>

</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章