欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

如何在smarty模板中执行php代码 有大用

Smarty模板主要的目的是分离逻辑层和表现层,所以在模板中不应该包含逻辑部分,逻辑层也不应该含有HTML。要在模板中插入逻辑程序的这种做法“非常”不被推荐,在你的case中。
如果你真正的需要在模板中使用脚本程序,smarty也提供了{php}标签,允许programmer在表现层混入php代码(再次提示:这种不利于逻辑层与表现层的分离,违背了程序与结构的分离)。看一看如何在模板中插入php代码:

[html] view plain copy
  1. phpCode.tpl:  

  2. {php}  

  3.   echo "There is php code in the template of smarty";  

  4.    for($i=1 ; $i<=3; $i++){  

  5.       echo "but it's better to avoid php code in your case!";  

  6.    }  

  7.  {/php}  

 

[html] view plain copy
  1. phpCode.php   

  2.  <?  

  3.  include("libs/smarty.class.php");  

  4.  $smarty = new smarty();  

  5.  $smarty->display("phpCode.tpl")  

  6.  ?>  

注意:如果出现Fatal error: Uncaught exception 'SmartyException' with message '{php} is deprecated, set allow_php_tag = true to enable'。这是因为{php} 标签默认是关闭的,使用$smarty->allow_php_tag=true;开启即可。(注意此处的定界符默认为“{php}”,也可人为定义成“<!--{php}-->”)

注:同一smarty模板的各个php标签间的变量不通用,也就是说,某一php标签中定义的变量,其作用域仅限于本标签。

来自 http://blog.csdn.net/moqiang02/article/details/10425059


smarty模板文件中执行php代码 调用php函数的方法 使用对象等

smarty 执行php代码 调用php函数 虽违背smarty但不失灵活,有时候也在SMARTY中也不得不使用PHP的相关函数和一些语句的


  • PHP Code复制内容到剪贴板
    1. {php}     

    2. echo "alert('here is php method run ~!');";     

    3. {/php}     

    4. 因为应用需要,要在Smarty中调用PHP函数,实现办法如下:     

    5. 模板     

    6. 数据条数:{$data|count}     

    7. 活动页面文件后缀:{$page|substr:'-3'}     

    8. 特殊情况:{$page|str_replace:'jpg':'png'}     

    9. 对应php实现     

    10. count($data);     

    11. substr($page, -3);     

    12. str_replace('jpg''png'$page);   


    smarty 模板中使用对象,使用对象方法

    PHP Code复制内容到剪贴板
    1. 后台     

    2. class aa{     

    3.     public function objecho(){     

    4.         return isManager();     

    5.     }     

    6. }   

    7. $objaa = new aa();     

    8. $objTemplate->assign("objaa",$objaa);   

    9.   

    10.   

    11. tpl中     

    12. {assign var="ismanager" value=$objaa->objecho()}     

    13. {$ismanager}     

    来自  http://blog.csdn.net/yangqicong/article/details/6934610


普通分类: