12月15日下午Smarty模板函数
1.{$var=...}
这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值。
<{$a = 10}><!--赋值语句-->
<{$a}><!--输出语句,输出结果为10-->
2.{appeng}
{append}用于在模板执行期间建立或追加模板变量数组。
3.{assign}
{assign}用来在模板运行时为模板变量赋值。
4.{block}
{block}用来定义一个命名的模板继承源区域。意思就是一个模板可以继承另外一个模板。例如套用phpcms模板时,把头部文件header和尾部文件footer单写出来,每个页面引入这两个页面就可以了。
5.{config_load}
{config_load}用来从配置文件中加载config变量(#variables#)到模版。
6.{for}、{foreach}、{section}
{for}、{foreach}、{section}都是用来循环输出的。其中{section}已经被淘汰了,基本上不用了。
下面用foreach遍历出数组:
test.php
<?php
session_start();
//引入配置文件
include("../init.inc.php");//init.inc.php里面已经造smarty对象了。
$attr = array("hello","world","ni","hao");//写一个数组
$smarty->assign("shuzu",$attr);//把数组注入smarty模板里面 $smarty->display("test.html");//调用模板文件来显示 ?>
test.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>无标题文档</title>
</head>
<body>
<{foreach $shuzu as $v}><!--foreach循环遍历数组-->
<{$v}><br /><!--输出数组里面的内容-->
<{/foreach}>
</body>
</html>
输出结果:

循环中还存在下列目录
(1)<{$v@index }>包含当前数组的下标,开始时为0。
<body>
<{foreach $shuzu as $v}><!--foreach循环遍历数组-->
<{$v@index }><{$v}><br /><!--输出数组里面的内容-->
<{/foreach}>
</body>
输出结果:

(2){iteration}
iteration包含当前循环的迭代,总是以1开始,这点与index不同,index是从0开始的。每迭代一次值自动加1。
<body>
<{foreach $shuzu as $v}><!--foreach循环遍历数组-->
<{$v@iteration}><{$v}><br /><!--输出数组里面的内容-->
<{/foreach}>
</body>
输出结果:

(3){@first}
当{foreach}循环第一个时first为真。这里我们演示当第一次迭代表格头所在行。
<body>
<{foreach $shuzu as $v}><!--foreach循环遍历数组-->
<{$v@first}><{$v}><br /><!--输出数组里面的内容-->
<{/foreach}>
</body>
输出结果:如果输出的是第一条数据,返回波尔型数据的真,即1.

@first可以按照下面的方法使用
<body>
<{foreach $shuzu as $v}><!--foreach循环遍历数组-->
<{if $v@first}><!--判断是不是显示的第一条数据-->
<span style="color:red"><{$v}></span><br /><!--如果是第一条数据,就显示为红色-->
<{else}><!--如果不是第一条数据-->
<{$v@first}><{$v}><br /><!--直接输出数组里面的内容-->
<{/if}>
<{/foreach}>
</body>
输出结果只有第一条数据显示为红色。

(4){@last}
当{foreach}迭代到最后时last为真。这里我们演示当迭代到最后时显示一条横线。用法和{@first}一样。
(5){@show}
show属性用在检测{foreach}循环是否无数据显示,show是个布尔值(true or false)。意思就是如果返回值是true,说明这个循环是有值的,如果返回值是flase,说明这个循环是没有值的。
(6){@total}
total包含{foreach}循环的总数(整数),可以用在{forach}里面或后面。
<body>
<{foreach $shuzu as $v}><!--foreach循环遍历数组-->
<{if $v@first}><!--判断是不是显示的第一条数据-->
<span style="color:red"><{$v}></span><br /><!--如果是第一条数据,就显示为红色-->
<{else}><!--如果不是第一条数据-->
<{$v@first}><{$v}><br /><!--直接输出数组里面的内容-->
<{/if}> <{$v@total}> <{/foreach}>
</body>
显示结果:说明总共有4次循环。

7.{include}
{include}标签用于在当前模板中包含其它模板。当前模板中的任何有效变量在被包含模板中同样可用。
{include file='page_header.tpl'}
自定义函数
自定义函数都可以成为插件
1.{html_select_date}
自定义函数{html_select_date}用于创建日期下拉列表,它可以显示任意年月日。下述列表中没有说明的参数会在相应的年、月、日<select>标签中以名/值的键值对形式显示出来。
<body>
<{html_select_date prefix='StartDate' start_year='-5'
end_year='+1' display_days=false}>
</body>
显示结果:

2.{textformat}
{textformat}用于格式化文本。该函数主要清理空格和特殊字符,对段落按单词边界换行和行缩进等段落格式化处理。
用户可以明确设置参数,或使用预处理风格。目前只有唯一可用风格"email"。
下面是从文件目录里面找变量调节器
变量调节器文件统一放在了D:\wamp\www\project\libs\plugins里面
1.modifiercompiler.upper.php文件是用来转大写的,下面是其代码。
function smarty_modifiercompiler_upper($params)//变量调节器的名字,()里面传一个参数。
{
if (Smarty::$_MBSTRING) {//处理数据
return 'mb_strtoupper(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
}
// no MBString fallback
return 'strtoupper(' . $params[0] . ')';//返回处理完的数据
}
2.可以根据默认的插件自己来写插件,自己的插件目录为D:\wamp\www\project\plugins
下面建一个改变字符串颜色的调节器,文件名为modifier.color.php,注意文件名的命名和调节器名字的写法。
<?php
function smarty_modifier_color($str)//modifier是变量调节器的名字,color是变量调节器名称。()里面必须有一个参数,这个参数是拿来改变颜色的变量
{
$str = "<span style='color:red'>{$str}</span>";//给变量加上样式
return $str;//将变量返回
}
?>
在test.php页面里面写一个变量,并且将处理完的变量注入到smarty模板里面。
<?php
session_start();
//引入配置文件
include("../init.inc.php");//init.inc.php里面已经造smarty对象了。
$a = "hello";//要传过去的变量
$smarty->assign("a",$a);//把变量注入smarty模板里面 $smarty->display("test.html");//调用模板文件来显示
?>
前端页面test.html显示
<body>
<{$a|color}><!--注意引入的写法-->
</body>
结果显示为

3.下面看D:\wamp\www\project\plugins里面的function.shuchu.php文件
下面是文件的内容
<?php
function smarty_function_shuchu($args)//$args是传过来的变量
{
for($i=0;$i<10;$i++)//循环输出了10次aaaaaaaa
{
echo "aaaaaaaa<br>";
}
}
?>
如果没有参数要传,就不需要写参数。
<body>
<{shuchu}><!--直接输出就可以,没有参数就不需要写参数-->
</body>
12月15日下午Smarty模板函数的更多相关文章
- AHKManager.ahk AHK管理器 2019年12月15日
AHKManager.ahk AHK管理器 2019年12月15日 快捷键 {Alt} + {F1} ///////////////////////////////////////////// ...
- 2016年12月15日 星期四 --出埃及记 Exodus 21:10
2016年12月15日 星期四 --出埃及记 Exodus 21:10 If he marries another woman, he must not deprive the first one o ...
- 【C++】命令行Hangman #2015年12月15日 00:20:27
增加了可以在构造Hangman对象时通过传入参数设定“最大猜测次数”的功能.少量修改.# 2015年12月15日 00:20:22 https://github.com/shalliestera/ha ...
- 北京Uber优步司机奖励政策(12月15日)
用户组:人民优步及电动车(适用于12月15日) 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:htt ...
- 12月15日smarty模板基本语法
smarty基本语法: 1.注释:<{* this is a comment *}>,注意左右分隔符的写法,要和自己定义的一致. <{* I am a Smarty comment, ...
- 12月13日上午Smarty模版原理
模板主要是用来让前端和后端分离的,前台页面只是一个前台页面,后台页面用php代码写逻辑,写完逻辑拿到前台显示. 一.写法 一般需要以下:写3个页面: 1.显示页面aa.html <!DOCTYP ...
- 10月21日下午PHP常用函数
函数四要素:返回类型 函数名 参数列表 函数体 //最简单的函数定义方式 function Show() { echo "hello"; } Show();//输出结果为he ...
- 12月15日 session:Ruby on Rails Security Guide//从第3节开始没有学习//关于find_by 和where的区别用法思考。
http://guides.rubyonrails.org/security.html#user-management 2.session笔记见13日的随笔. http://www.cnblogs.c ...
- 12月15日BGV币行情分析
今日,DeFi市场格外精彩.各主流概念币种走势出现了涨跌各半的两极态势.笔者认为,由于并没有总体可以利好DeFi市场的基本面因素,所以各DeFi概念币种的涨跌态势,还是与各自的基本面和技术面走势相关. ...
随机推荐
- iOS网络3—UIWebView与WKWebView使用详解
一.整体介绍 UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView将逐步取代笨重的UIWebView.通过简单的测试即可发现UIWebView占用过多内存,且 ...
- jquery双向列表选择器select版
这个是select版的,若想美化某些样式是不支持得,可以用div模拟版的,功能基本实现能用了,需要其他功能自己加上. div模拟版链接:http://www.cnblogs.com/tie123abc ...
- nginx启动、关闭、重启
1.启动 [root@localhost local]# nginx/sbin/nginx #启动 [root@localhost local]# nginx/sbin/nginx -t #检查配置文 ...
- 【译】Spring 4 基于TaskScheduler实现定时任务(注解)
前言 译文链接:http://websystique.com/spring/spring-job-scheduling-with-scheduled-enablescheduling-annotati ...
- Linux下安装 Posgresql 并设置基本参数
在Linux下安装Postgresql有二进制格式安装和源码安装两种安装方式,这里用的是二进制格式安装.各个版本的Linux都内置了Postgresql,所以可直接通过命令行安装便可.本文用的是Cen ...
- [Hadoop in Action] 第1章 Hadoop简介
编写可扩展.分布式的数据密集型程序和基础知识 理解Hadoop和MapReduce 编写和运行一个基本的MapReduce程序 1.什么是Hadoop Hadoop是一个开源的框架,可编写和运 ...
- 4-4 grep及正则表达式
1. grep:Globally search a Regular Expression and Print:根据模式搜索文本,并将符合模式的文本行显示出来 pattern:文本字符和正则表达式的元字 ...
- MFC快速入门 - 菜单
本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6231104.html 打开VS2010,依次打开File – New – Proje ...
- 虚拟机+apache+php+mysql 环境安装配置
虚拟机的安装:直接下一步即可,注意修改路径. 安装完成后新建虚拟机,直接下一步.如果选择镜像文件后出现错误,可以试着去修改电脑bios中的虚拟化设置,改为enable,如下图: apache安装: 1 ...
- nodejs中异常错误的处理方式
因为nodejs是单线程的,所以一旦发生错误或异常,如果没有及时被处理整个系统就会崩溃.错误异常有两种场景的出现,一种是代码运行中throw new error没有被捕获,另一种是Promise的失败 ...