怎么在smarty中增加类似foreach的功能自动加载数据

  介绍

这篇文章主要介绍了怎么在smarty中增加类似foreach的功能自动加载数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

在smarty中使用自定义插件来加载数据,在使用的时候还是感觉不够方便,灵机一动就想写成类似foreach那种标签:

第一步:在Smarty_Compiler.class。php的_compile_tag函数中增加:

//加载数据的开始标签   case  & # 39;负载# 39;:   ,$ this→_push_tag(& # 39;负载# 39;);   ,return 这→美元_complie_load_start ($ tag_args);   ,打破;//加载数据的结束标签   case  & # 39;/负载# 39;:   ,$ this→_pop_tag(& # 39;负载# 39;);   ,return “& lt; ? php  endforeach;, endif;,复原(随/$);,在“;   ,打破;

第二步:增加一个方法:

/* *   *,加载数据   *,@param  tag_args美元   */function  _complie_load_start (tag_args美元)   {   ,key 美元;=,substr (md5 (tag_args美元),,8日,16);,,,//根据参数生成一个特殊的变量名   美元,美元attrs =,这→_parse_attrs ($ tag_args);   ,//这里可以增加更多的处理   ,class 美元;=,(!收取($ attrs[& # 39;类# 39;]),| |,空($ attrs[& # 39;类# 39;])),?,& # 39;cls_crud& # 39;,:,修剪($ attrs[& # 39;类# 39;]);   ,(!收取($ attrs[& # 39;表# 39;]),| |,空($ attrs[& # 39;表# 39;])),,,,退出(& # 39;“表”,is 空! & # 39;);=,db 美元,美元class::工厂(数组(& # 39;表# 39;,=祝辞,substr ($ attrs[& # 39;表# 39;],,1,1)));   ,//定义新变量   美元,美元这→_tpl_vars(例子),=,$ db→get_block_list(数组(substr ($ attrs[& # 39;在# 39;],,1,1)),,$ attrs[& # 39;限制# 39;]);   ,tag_args 美元;=,“从=/${$关键},“,只tag_args美元;   ,//调用foreach标签处理函数进行处理   ,return 这→美元_compile_foreach_start ($ tag_args);   }

这样就可以在模板中使用负载这个标签了。用法例如:

{load 表=皌est",,=啊癷d”& lt; 100年“,限制=10,项=rec}   ,,…   {/负载}

感谢你能够认真阅读完这篇文章,希望小编分享的“怎么在smarty中增加类似foreach的功能自动加载数据”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

怎么在smarty中增加类似foreach的功能自动加载数据