介绍
这篇文章主要介绍了怎么在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的功能自动加载数据”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!