Smarty内建函数

暂时只记录个别,不全部记录

 

{nsert} 函数

 

缓存开启后 如果不想缓存模板中某一个部分的信息可以使用此函数

 

实例代码:

{insert nme="getMssage" lid=1 , sid=2}


此时smarty会调用函数名为 insert_getMessae()的函数 而该函数通常是我们自定义的,函数大概的代码 (为了说明 简单写)

<?php
function insert_getMessage($ars) {
    /*
      通过上面的insert调用此函数时
    参数$ars 的值为
     
     $ars = array('lid' => 1 ,'sid' => 2);
      也就是说你可以传递任意个参数 
    属性名会成为 $ars 的键属性的值就是对应的值
    */
   // 一些数据库操作 获取数据 
  
   return $resut;

   
}
?>


这里 假设 $resul 是一个数组,一旦 smarty 调用 getMessage 函数得到结果之后会立刻输出,所以 目前我们只能看到 Array 被输出在页面中。

 

解决方法是

1:直接在函数体内便利结果数组,直接把 html 返回。

2:先把结果数组用 assign 保存下来 例如

{insert name="getMessage" lid= 1 , sid=2 assign="testMessage"}


 

如果 insert 有 assign 那么 smarty 不会吧 结果直接输出,而是把 结果赋值到 testMessage 变量中。

我们可以通过 section 或 foreach 来便利结果。

 

问题是我测试后发现 如此的操作 得到的 testMessage 用 循环语句 便利 是看不到效果,当我把 $tpl -> caching = false 之后才能看到。

但这样做的话 已经关闭了缓存 何必还使用 insert 呢 ?

 

其他的 解决方法还没找到,刚碰smarty 后期 找到其他的 解决方法之后在补。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值