中山php|最优网络 :中山做网站 中山php建站
最优良人
Posts Tagged With: smarty
smarty模版使用php标签,如何获取模版变量
2012/09/22 at 11:54 » Comments (502)
已经assign一个模版变量$assign,由于要做特殊的循环输出,使用for循环,因此使用到了php标签,但是php语句和模版语句的变量作用域是不同的,因此不能直接获取到 {{php}} for($i=0;$i<count($assign);$i=$i+2){ echo ' <ul> <li> <span class="zz_pic"><a href="'._url('picture',array('col_key'=>'cert','pic_id'=>$assign[$i][pic_id])).'" title=""><img src="uploads/thumb_'.$assign[$i][pic].'" alt=""></a></span> <span class="zz_title"><a href="'._url('picture',array('col_key'=>'cert','pic_id'=>$assign[$i][pic_id])).'" title="">'.$assign[$i][title].'</a></span> </li> <li> <span class="zz_pic"><a href="'._url('picture',array('col_key'=>'cert','pic_id'=>$assign[$i+1][pic_id])).'" title=""><img src="uploads/thumb_'.$assign[$i+1][pic].'" alt=""></a></span> <span class="zz_title"><a href="'._url('picture',array('col_key'=>'cert','pic_id'=>$assign[$i+1][pic_id])).'" title="">'.$assign[$i+1][title].'</a></span> </li>i> </ul>';} {{/php}} 解决的方法是:模版变量全部存在smarty的一个对象里面;只要在for之前进行赋值:$assign = $this->_tpl_vars[assign]; {{php}} $assign = $this->_tpl_vars[assign]; for($i=0;$i<count($assign);$i=$i+2){ echo ...more »好用的smarty标签:capture,literal,fetch
2012/09/22 at 11:16 » Comments (481)
1,capture标签 capture的中文意思是抓取,它的作用是抓取模板输出的数据,当我们需要它的时候,调用它,以得到抓取数据的目的。例子: {capture name=test} <img src=”testimg.jpg”> {/capture} <div class=”image”> {$smarty.capture.test} </div> 说明: 在{capture name=”test”}和{/capture}之间的内容被存储到变量$test中,该变量由name属性指定.在模板中通过 $smarty.capture.test 访问该变量.如果没有指定name 属性,函数默认将使用”default” 作为参数,这一点很jquery中的clone 2,config_load标签 config_load可以直接将文件中的内容读取出来,这样可以省掉assign这一步。 test.csv: pageTitle = ”config_load_test” bodyBgColor = ”#eeeeee” img = ”girl.jpg” width=”100″ height=”100″ index.tpl: {config_load file=”test.csv”} <html> <title>{#pageTitle#}</title> <body bgcolor=”{#bodyBgColor#}”> <img src=”{#img#}” width=”{#width#}” height=”{#height#}”> </body> </html> 上述过程中如果出现这样的问题Warning: Smarty error: unable to read resource, 请查看一下,你的test.csv是不是放在smarty的配置目录中,默认配置目录是configs /** * The directory where config files are located. * * @var string */ var $config_dir = ’configs’; 3,literal标签的使用 做web开发,难免会写一些JS,jquery代码。js和jquery里面都会{}这样的符号,smarty会不会把它理解成php的变量呢?如果你不加literal标签的话,smarty肯定会把它理解变量了,加了就不会,例如: {literal} function getAbsLeft(e){ var l=e.offsetLeft; while(e=e.offsetParent)l+=e.offsetLeft; return l; } function getAbsTop(e){ var t=e.offsetTop; while(e=e.offsetParent)t+=e.offsetTop; return t; } {/literal} 4,php标签 当你习惯了assign后,你有没有想过,在模板文件里面直接写php代码呢,我想有的时候你肯定很想吧。例如: {php} global $result; foreach($result as $key=>$value){ echo ”key=$key,value=>$value<br>”; } {/php} 5,strip标签 strip标签去除标签内的空格和回车,这一点我觉得,做手机开发的朋友肯定用的到,因为全角空格有可能会导致整个页面错乱,甚至是一个空白页面。手机屏幕小,估计用smarty的可能性也比较小。 {strip} <div> <font color=”red”>strip</font> </div> {/strip} 6,fetch标签 fetch标签根php的file_get_contents挺想的,都可以把文件中的内容读出来,并且是个字符串的形势 {fetch file=”./aaaa.txt” assign=”result”} {if is_array($result)} <b>is array</b> {else if} <b>not array</b> {/if} more »smarty 利用@ 在模版完整打印多维数组
2012/07/21 at 09:41 » Comments (613)
有时候我们希望直接在模版上打印数组变量以供调试,打印的方式可以用php自带的print_r或者是自己写的调试函数,如debug(). 如果直接这样打印多维数组 {{$var|print_r}},在模版看到的结果会是遍历后的所有的value,不会显示完整的数组结构,正确的方法是在函数前加个@,意思是把变量作为整体去对待 {{$var|@print_r}} more »smarty模版函数含多参数的使用规则
2012/02/01 at 17:38 » Comments (359)
模板中调用变量时,当只有一个参数是,就直接{$str1|函数名},当有函数有两个参数时,{第一个参数|函数名:第二个参数},当有三个参数时,{第一个参数|函数名:第二个参数:第三个参数},,当有4,5,,,参数时,以此类推。 smarty在模板上可以直接使用php自带的函数,甚至可以使用自定义的函数。 smarty使用date函数的用法是{{'Y-m-d'|date:$var}} more »Smarty模版中,数组的键名是一个变量的值,如何显示该键名对应的值
2011/09/08 at 16:45 » Comments (210)
题目有点绕口,大概的意思是 php已经赋给模版一个数组,数组的信息如下: $config= array( 1=>'中山', 2=>'石岐' ); 数据库存储地区的字段记录的是该数组的键名,如1,现在要在模版上显示:中山。 如果这样写会报错: {{$config.$row.region}} 模版上的正确的写法是:{{$config[$row.region]}} 今天遇到的问题还更复杂一点,数据库字段存储的是一些配置的序列化,所以在调取地区信息时还需要进行反序列化处理,中间必须有一个赋值的过程: {{assign var=param value=$l.params|unserialize}} 然后$param.region就可以取得1这个值了 more »smarty使用date函数
2011/08/19 at 18:04 » Comments (5)
smarty在模板上可以直接使用php自带的函数,甚至可以使用自定义的函数,使用的方法是: 模板中调用变量时,当只有一个参数是,就直接{$str1|函数名},当有函数有两个参数时,{第一个参数|函数名:第二个参数},当有三个参数时,{第一个参数|函数名:第二个参数:第三个参数},,当有4,5,,,参数时,以此类推。 smarty使用date函数的用法是{{'Y-m-d'|date:$var}} more »