需求: 在smarty模板里需要判断某个条件成立后只生成一次<div></div>文件 模板文件: {if ($a_type == 1) &&($v.ii==1)} <div><a href="http://blog.163.com/man_keke/blog/xxx"></a> {php} $a_type= 0;{/php} {/if} <div></div> {if $a_type == 0}</div>{/if} 测试了很久,发现模板文件{php} $a_type= 0;{/php} 程序会都没有生成这个<div></div> 然后看了下smarty的混编文件发现。。smarty这个类调用的是: <?php echo $this->_tpl_vars['a_type'] ; ?> 而 $a_type= 0;在模板文件里面生成的是 <?php echo $a_type= 0;?> 所以 {php} $a_type= 0;{/php} 改成: {php} $this->_tpl_vars['a_type'] = 0;{/php} 程序可以正常实现功能。 那程序是不是完成了呢? 通过测试,还发现一个问题。当你的php文件调用该模板进行多个html生成的时候,有个弊端。就是。当在同一个类生成html文件时,会出现后面的html文件里面里: {php} $this->_tpl_vars['a_type'] = 0;{/php} 这个问题.都是调用同一个的smarty 类。。没有完成所以这个属性还是成立的 所以在php文件里我是这样用的: php文件里: $this->smarty -> assign('a_type',2);//先进行该条件的初始化。然后其他的html模板都不会再生成该html文件 if($a == 0){ $this->smarty -> assign('a_type',1); } 以上内容只是我对某些项目一些心得有更好的方法欢迎指正。。。。具体的环境配置需要自己去体会。 |
|