• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
小白菜Caly的程序小屋
记录小白菜成长的脚印
博客园    首页    新随笔    联系   管理    订阅  订阅
Smarty 模板 insert 局部刷新不缓存功能

 

属性

类型

是否必须

缺省值

描述

name

string

Yes

n/a

插入函数的名称

assign

string

No

n/a

该属性指定一个变量保存待插入函数输出

script

string

No

n/a

插入函数前需要先包含的php脚本名称

[var ...]

[var type]

No

n/a

传递给待插入函数的本地参数

 

  Insert 函数类似欲 inluce 函数,不同之处是 insert 所包含的内容不会被缓存,每次调用该模板都会重新执行该函数.

  例如你在页面上端使用一个带有广告条位置的模板,广告条可以包含任何HTML、图象、FLASH等混合信息. 因此这里不能使用一个静态的链接,同时我们也不希望该广告条被缓存. 这就需要在 insert 函数指定:#banner_location_id# 和 #site_id# 值(从配置文件中取),同时需要一个函数取广告条的内容信息.

  在此例中,我们使用了 getBanner 作为 name 属性,同时传递了 #banner_location_id# 和 #site_id# 两个参数. 接下来 Smarty 在你的 php 程序中搜索名为 insert_getBanner() 的函数,#banner_location_id# 和 #site_id# 的值被组合成一个数组作为函数的第一个参数传递给该函数. 为了避免函数命名混乱,所有的 insert 函数都必须以 insert_ 开头. 你的 insert_getBanner() 函数根据传递的参数执行并返回执行的结果. 这些结果就显示在模板中调用该函数的位置. 在此例中 Smarty 调用该函数类似insert_getBanner(array("lid"=>"12345","sid"=>67890"));并将返回的结果显示在调用的位置.

  如果设置了 assign 属性,该属性对应的变量名用于保存待包含函数的输出,这样待包含函数的输出就不会直接显示了.注意:赋给模板变量的输出信息在缓存的时候同样无效.

  如果指定了 script 属性,在调用函数并执行前将先包含(只包含一次)script指定的 php 脚本. 这是为了防止被调用的函数不存在,先调用包含该函数的 php 脚本将避免该情况.

  Smart 对象作为函数的第二个参数被传递,在待包含函数中可以通过 $this 访问并修改 smarty 对象信息.

 

示例:

smarty中往insert中传参数的方法: 
smarty里insert方法传参数的方法介绍如下: 
smarty模板: 
{insert name="getPara" p1="php" p2="zixue"} 

php代码: 
function insert_getPara($arr) 
{ 
return $arr["p1"]." " .$arr["p2"]; 
} 

将输出:php zixue 

用insert方法的时候,代码里的函数名前面一定要有"insert_" 否则会出错,当然除了你改了模板规则. 
其中p1,p2,是要传的两个参数名,可以有多个,任意的,只要里外对应就行.$arr表示数组也是随便写的

posted on 2011-12-16 18:09  Caly pc  阅读(459)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3