在《【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}

运行结果如下:

从上述的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标签括起来。

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

  1. jmeter中没有sampler_jmeter(七)-BeanShell常用内置变量和场景

    Bean Shell常用内置变量 JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:写入信息到jmeber.log ...

  2. shell--特殊位置参数变量及常用内置变量

    1.shell中的特殊位置参数变量 $0:获取当前执行的shell脚本的文件名,如果执行脚本包含了路径,那么就包括脚本路径 $n:获取当前执行的shell脚本的第n个参数,n=1..9,当n为0时表示 ...

  3. mysql内置变量_MySQL常用内置变量

    MySQL用很多常用的内置变量,掌握这些内置变量后对于我们快速获取当前MySQL的配置有很大帮助,下面就来列举几个常用的变量. 查看当前MySQL版本号信息.show variables like ' ...

  4. Python(8):模块内置变量

    写在前面 文章目录 模块内置变量 常用内置变量 __name__变量 __package__变量 __file__变量 __doc__变量 专栏目录 模块内置变量 常用内置变量 __name__变量 ...

  5. openresty 内置变量

    openresty 内置变量 官网:http://nginx.org/en/docs/varindex.html 常用内置变量 openresty 获取nginx的内置变量 nginx 内置变量:$a ...

  6. linux内置变量大全,Linux进阶之bash编程四(内置变量)

    一:基础回顾 1:文件清空 [craft@vp143 test]$ >log.txt 2:正常和错误重定向输出 //正常和错误都追加输出到同样地方 [craft@vp143 test]$ ifc ...

  7. Perl常用的内置变量

    先来一个例子吧 #!/usr/bin/perl usewarnings; @array =qw(a b c d); foreach(@array) { print$_,"\n"; ...

  8. shell学习之常用bash内置变量

    常用的Bash内置变量 1 BASH_COMMAND当前执行的命令 2 LINENO显示当前所在行号 /bin/bash echo "this is test about ARG LINEN ...

  9. 04.Beetl常用内置函数以及安全输出---《Beetl视频课程》

    本期视频实现了三个功能,模糊搜索.标签分类.登录/注销功能: 内容简介:使用了常用内置函数,以及安全输出,实现了上面提到的三个业务 一起学beetl目录:https://my.oschina.net/ ...

最新文章

  1. 关于NB-IoT,没有比这篇更通俗易懂的啦!
  2. python 模拟抽象类
  3. 计算机应用计算题(88)10,计算机应用考试习题(88页)-原创力文档
  4. POS机专业国密安全芯片
  5. 高级concurrent包
  6. linux内核相关知识
  7. linux media v4l2,Linux kernel drivers/media/v4l2-core/videobuf2-v4l2.c拒绝服务漏洞(CVE-2016-4568)...
  8. rf 遍历列表_RF学习笔记
  9. “十三五”输电通道规模倍增 重点建设配电网
  10. 被子植物353个单拷贝核基因靶向捕获探针 Plant Universal — Angiosperms 353
  11. 多测师肖sir_高级金牌讲师_项目介绍之保险项目的案例
  12. 耗时10个小时用纯HTML和CSS写成的小兔鲜儿
  13. 解读混淆矩阵在语义分割FCN指标计算中的应用(含代码实现)
  14. Lua的浅拷贝和深拷贝
  15. 论文中不带边框表格制作方法
  16. 回归算法(最小二乘法拟合)
  17. 1. 激活函数(Activation functions)
  18. 演绎另类黑客马拉松,机智云中国第二届智能硬件36小时开发大赛完美收官
  19. 差分信号、共模信号、单端信号异同 (2022.2.14)
  20. matlab 随机数种子

热门文章

  1. 浅谈线性变换、PCA和SVD
  2. 使用PHPSA做静态分析:PHP Smart Analyzer
  3. 安徽:0.1元优粮优购的正效应
  4. vol.131 日本异闻录 · 我曾经去了一个假的日本
  5. 纪念当年我的第一个python程序“hello world”
  6. 生信学院|03月03日《SOLIDWORKS PDM系统的配置优化》
  7. 程序猿健康养生口诀和食谱来了
  8. c语言数组找100以内的素数,使用c语言判断100以内素数的示例(c语言求素数)
  9. 解决安卓底部导航大于3个时标题隐藏的问题
  10. 2021年山东省安全员C证新版试题及山东省安全员C证考试总结