本文實例講述了Thinkphp中volist標簽mod控制一定記錄的換行BUG解決方法。分享給大家供大家參考。具體方法如下:
一、BUG描述:
存在於thinkphp 2.0 版本
Mod屬性還用於控制一定記錄的換行,例如:
復制代碼 代碼如下:<volist name="list" id="vo" mod="5" >
{$vo.name}
<eq name="mod" value="4"><br/></eq>
</volist>
上述文字節選自官方手冊
實際的執行結果是:
第一行 4個記錄(缺少一個)
第二行及後面行才是 5個記錄
二、修改意見:
ThinkPHP\Lib\Think\Template\TagLib\TagLibCx.class.php
line 107和line 108 位置互換一下
原代碼:
復制代碼 代碼如下:$parseStr .= '++$'.$key.';';
$parseStr .= '$mod = ($'.$key.' % '.$mod.' )?>';
修改後:
復制代碼 代碼如下:$parseStr .= '$mod = ($'.$key.' % '.$mod.' );';
$parseStr .= '++$'.$key.'?>';
希望本文所述對大家的ThinkPHP框架程序設計有所幫助。
你這樣試試
<volist name="list" id="vo" key="k">
{$vo.title}<br/>
<if condition="($k-1)%5==4 and $k!=$count">
//前面的5相當於你的mod裡面的5,後面的4相當於你的value裡面的4,$count是統計總條數(在方法中使用assign輸出)
<br />
</if>
</volist>
下面這個方法也可以試試($count同上)
<volist name="list" id="vo" key="k" mod="5">
{$vo.title}<br/>
<eq name="mod" value="4"><neq name="k" value="$count"><br /></neq></eq>
</volist>
請查看thinkphp的官方文檔第8章模板引擎第9節Volist標簽,其中提到volist的屬性中有一個key屬性,原文:
key(可選):循環的key變量,默認值為i這個就是你的自增序號,而且默認變量就是$i,也就是說在你的volist標簽之內,可以直接使用$i
<volist name="vlist" id="v"> <{$i}> // 直接使用$i</volist>