smarty学习——内建函数(部分接上)
9.{foreach} {foreachelse}
格式如下:
{foreach $arrayvar as $itemvar} {foreach $arrayvar as $keyvar=>$itemvar}
foreach 和for 的目的是相似的都是进行循环的数据操作,具有以下特性:
a.支持嵌入,就是我们可以在foreach 中继续使用foreach
b.通常使用的数据 $arrayvar 是数组类型的数据。
c.foreachelse 是当在数组中没有数据时执行。
d.{foreach} 内置一些属性 @index, @iteration, @first, @last, @show, @total.
e.里面可以包含{break} { continue}
如下例子:
简单例子:
<?php
$arr = array('red', 'green', 'blue');
$smarty->assign('myColors', $arr);
?>模板文件如下: <ul>
{foreach $myColors as $color}
<li>{$color}</li>
{/foreach}
</ul> 输出结果: <ul>
<li>red</li>
<li>green</li>
<li>blue</li>
</ul>
处理键值:
<?php
$people = array('fname' => 'John', 'lname' => 'Doe', 'email' => 'j.doe@example.com');
$smarty->assign('myPeople', $people);
?> 键值模板: <ul>
{foreach $myPeople as $value}
<li>{$value@key}: {$value}</li>
{/foreach}
</ul> 输出: <ul>
<li>fname: John</li>
<li>lname: Doe</li>
<li>email: j.doe@example.com</li>
</ul>
foreach 的嵌套:
<?php
$smarty->assign('contacts', array(
array('phone' => '555-555-1234',
'fax' => '555-555-5678',
'cell' => '555-555-0357'),
array('phone' => '800-555-4444',
'fax' => '800-555-3333',
'cell' => '800-555-2222')
));
?> 模板文件: {* key always available as a property *}
{foreach $contacts as $contact}
{foreach $contact as $value}
{$value@key}: {$value}
{/foreach}
{/foreach} {* accessing key the PHP syntax alternate *}
{foreach $contacts as $contact}
{foreach $contact as $key => $value}
{$key}: {$value}
{/foreach}
{/foreach} 输出 phone: 555-555-1234
fax: 555-555-5678
cell: 555-555-0357
phone: 800-555-4444
fax: 800-555-3333
cell: 800-555-2222
@index 的使用:
<table>
{foreach $items as $i}
{if $i@index eq 3}
{* put empty table row *}
<tr><td>nbsp;</td></tr>
{/if}
<tr><td>{$i.label}</td></tr>
{/foreach}
</table>
{break}的使用:
{$data = [1,2,3,4,5]}
{foreach $data as $value}
{if $value == 3}
{* abort iterating the array *}
{break}
{/if}
{$value}
{/foreach}
{*
prints: 1 2
*}
10. {if } {elseif} {else}
这几个语法比较常用:
这是使用的语法表格:
Qualifier | Alternates | Syntax Example | Meaning | PHP Equivalent |
---|---|---|---|---|
== | eq | $a eq $b | equals | == |
!= | ne, neq | $a neq $b | not equals | != |
> | gt | $a gt $b | greater than | > |
< | lt | $a lt $b | less than | < |
>= | gte, ge | $a ge $b | greater than or equal | >= |
<= | lte, le | $a le $b | less than or equal | <= |
=== | $a === 0 | check for identity | === | |
! | not | not $a | negation (unary) | ! |
% | mod | $a mod $b | modulous | % |
is [not] div by | $a is not div by 4 | divisible by | $a % $b == 0 | |
is [not] even | $a is not even | [not] an even number (unary) | $a % 2 == 0 | |
is [not] even by | $a is not even by $b | grouping level [not] even | ($a / $b) % 2 == 0 | |
is [not] odd | $a is not odd | [not] an odd number (unary) | $a % 2 != 0 | |
is [not] odd by | $a is not odd by $b | [not] an odd grouping | ($a / $b) % 2 != 0 |
11 .include
include的语法表格:
Attribute Name | Type | Required | Default | Description |
---|---|---|---|---|
file | string | Yes | n/a | The name of the template file to include |
assign | string | No | n/a | The name of the variable that the output of include will be assigned to |
cache_lifetime | integer | No | n/a | Enable caching of this subtemplate with an individual cache lifetime |
compile_id | string/integer | No | n/a | Compile this subtemplate with an individual compile_id |
cache_id | string/integer | No | n/a | Enable caching of this subtemplate with an individual cache_id |
scope | string | No | n/a | Define the scope of all in the subtemplate assigned variables: 'parent','root' or 'global' |
[var ...] | [var type] | No | n/a | variable to pass local to template |
可选的选项:
Name | Description |
---|---|
nocache | Disables caching of this subtemplate |
caching | Enable caching of this subtemplate |
inline | If set merge the compile code of the subtemplate into the compiled calling templat |
12 .include_php
Attribute Name | Type | Required | Default | Description |
---|---|---|---|---|
file | string | Yes | n/a | The name of the php file to include as absolute path |
once | boolean | No | TRUE |
whether or not to include the php file more than once if included multiple times |
assign | string | No | n/a | The name of the variable that the output of include_php will be assigned to |
可选的:
Name | Description |
---|---|
nocache | Disables caching of inluded PHP script |
13.{ldelim} {rdelim}
进行javascript 以及css 文件的添加:可以使用 {literal}{/literal}
简单例子:
<script language="JavaScript">
function foo() {ldelim}
... code ...
{rdelim}
</script> 14.{section},{sectionelse}
也是类似的进行循环操作的标签:
Attribute Name | Type | Required | Default | Description |
---|---|---|---|---|
name | string | Yes | n/a | The name of the section |
loop | mixed | Yes | n/a | Value to determine the number of loop iterations |
start | integer | No | 0 | The index position that the section will begin looping. If the value is negative, the start position is calculated from the end of the array. For example, if there are seven values in the loop array and start is -2, the start index is 5. Invalid values (values outside of the length of the loop array) are automatically truncated to the closest valid value. |
step | integer | No | 1 | The step value that will be used to traverse the loop array. For example, step=2 will loop on index 0,2,4, etc. If step is negative, it will step through the array backwards. |
max | integer | No | n/a | Sets the maximum number of times the section will loop. |
show | boolean | No | TRUE |
Determines whether or not to show this section |
例子:
<?php
$data = array(
array('name' => 'John Smith', 'home' => '555-555-5555',
'cell' => '666-555-5555', 'email' => 'john@myexample.com'),
array('name' => 'Jack Jones', 'home' => '777-555-5555',
'cell' => '888-555-5555', 'email' => 'jack@myexample.com'),
array('name' => 'Jane Munson', 'home' => '000-555-5555',
'cell' => '123456', 'email' => 'jane@myexample.com')
);
$smarty->assign('contacts',$data);
?> 模板文件: {section name=customer loop=$contacts}
<p>
name: {$contacts[customer].name}<br />
home: {$contacts[customer].home}<br />
cell: {$contacts[customer].cell}<br />
e-mail: {$contacts[customer].email}
</p>
{/section} 输出: <p>
name: John Smith<br />
home: 555-555-5555<br />
cell: 666-555-5555<br />
e-mail: john@myexample.com
</p>
<p>
name: Jack Jones<br />
home phone: 777-555-5555<br />
cell phone: 888-555-5555<br />
e-mail: jack@myexample.com
</p>
<p>
name: Jane Munson<br />
home phone: 000-555-5555<br />
cell phone: 123456<br />
e-mail: jane@myexample.com
</p>
smarty学习——内建函数(部分接上)的更多相关文章
- smarty学习——内建函数 部分
Smarty自带一些内建函数. 内建函数是模板语言的一部分. 用户不能创建名称和内建函数一样的自定义函数,也不能修改内建函数. 一.包含的内建函数 {$var=...}{append}{assign} ...
- SpringMVC:学习笔记(8)——文件上传
SpringMVC--文件上传 说明: 文件上传的途径 文件上传主要有两种方式: 1.使用Apache Commons FileUpload元件. 2.利用Servlet3.0及其更高版本的内置支持. ...
- Smarty学习笔记(一)
1.Smarty的配置: 将lib的内容复制到自己的工程,然后引入 实例化和配置Smarty基本属性: $smarty = new Smarty(); $smarty->left_delimit ...
- 移动端头部固定,上划逐渐透明 (vue)
移动端头部固定,上划逐渐透明 <template> <div> <router-link tag="div" to="/" cla ...
- Git学习系列之Windows上安装Git详细步骤(图文详解)
前言 最初,Git是用于Linux下的内核代码管理.因为其非常好用,目前,已经被成功移植到Mac和Windows操作系统下. 鉴于大部分使用者使用的是Windows操作系统,故,这里详细讲解Windo ...
- Git学习系列之Windows上安装Git之后的一些配置(图文详解)
不多说,直接上干货! 前面博客 Git学习系列之Windows上安装Git详细步骤(图文详解) 第一次使用Git时,需要对Git进行一些配置,以方便使用Git. 不过,这种配置工作只需要进行一次便可, ...
- Django:学习笔记(8)——文件上传
Django:学习笔记(8)——文件上传 文件上传前端处理 本模块使用到的前端Ajax库为Axio,其地址为GitHub官网. 关于文件上传 上传文件就是把客户端的文件发送给服务器端. 在常见情况(不 ...
- TortoiseGit学习系列之Windows上本地代码如何通过TortoiserGit提交到GitHub详解(图文)
不多说,直接上干货! 前面博客 TortoiseGit学习系列之Windows上TortoiseGit的安装详解(图文) 上面博文给大家讲解了一下如何本地安装TortoiseGit. 这篇为大家讲一下 ...
- 2017-2018-1 20155232 《信息安全系统设计基础》第四周学习总结以及课上myod练习补充博客
2017-2018-1 20155232 <信息安全系统设计基础>第四周学习总结以及课上myod练习补充博客 课上myod练习 1 参考教材第十章内容 2 用Linux IO相关系统调用编 ...
随机推荐
- 一个登陆浏览api接口; 其他相关: Form_with参数的不同写法; 简单使用curl。
eeting-up app: 完成一个需求: 完成:https://github.com/chentianwei411/meeting-up-app 第四步实现API接口 Add api base a ...
- javascript实现select菜单/级联菜单(用Rails.ajax实现发送请求,接收响应)
在购物网站,填写收货地址的时候,会出现XX省XX市XX区的下拉菜单,如何实现此功能?思路是什么? 功能设置: 当选择省select菜单后,市的select菜单为这个省的城市列. 当选择市菜单后,区菜单 ...
- Liebig's Barrels CodeForces - 985C (贪心)
链接 大意:给定$nk$块木板, 要制作$n$个$k$块板的桶, 要求任意两桶容积差不超过$l$, 每个桶的容积为最短木板长, 输出$n$个桶的最大容积和 假设最短板长$m$, 显然最后桶的体积都在$ ...
- 使用opatch工具 打补丁Patch 21352635 -(Database Patch Set Update 11.2.0.4.8)
Patch 21352635 - Database Patch Set Update 11.2.0.4.8 一.OPatch工具检查及升级 OPatch工具包,在安装目录$ORACLE_HOME下,P ...
- overflow属性-摘自网友
关于我们 版权声明 网站地图 前端观察 专注于网站前端设计与前端开发 用IE6抢不到火车票的!!! Home 首页 CSS样式之美 Front News前端资讯 JavascriptAjax与JS技术 ...
- redis写入数据被转义问题
1.phpredis扩展写入redis的数据发现“ \ 会被自动转义成\" \\. 如: 写入 dadaf"daf\dad 在redis命令行读出为 dadaf\"da ...
- ASP.NET MVC4 Razor
2014-09-18 14:06 by 易code, 2854 阅读, 0 评论, 收藏, 编辑 1 Code Expressions 代码表达式 @表达式 or @(Expressions ) ...
- 框架:Lucene.net
Lucene.net 性能<第八篇> 摘要: 一.IndexReader性能分析 IndexReader完成了打开所有索引文件和提供底层reader API等繁重的工作,而IndexSea ...
- Linux免密码登陆
A电脑实现不用密码登陆到B电脑! vim /etc/ssh/sshd_config 编辑文件 01.在A电脑上生成ssh密钥 ssh-keygen -t rsa02.把A电脑生成的id_rsa.p ...
- 《Python》 面向对象三大特性之继承
一.继承大纲: 继承和抽象(两个概念) 1.单继承: 语法: 父类.基类.超类 子类.派生类 继承与重用:子类可以使用父类中的名字(变量和方法) 继承与派生:子类在父类的基础上又新创建了自己需要的方法 ...