ThinkPHP学习 volist标签高级应用之多重嵌套循环、隔行变色(转)
2015-10-27 13:27
597 查看
Action代码:
[php]
public function index(){
$prod = I("get.prod_en");
$id = I("get.id", 0, "int");
if ($prod == ""){
$serviceProduct = array();//多重循环遍历的数组
[php]
//数据保存在两张表中,这里通过循环初始化$serviceProduct数组
$service = M("product_class")->order("oid ASC")->select();
for ($i = 0; $i < count($service); $i++)
{
array_push($serviceProduct, array("srvName"=>$service[$i]["pc_cn"], "product"=>M("product")->where("prod_class_id=".$service[$i]["pcid"])->order("oid ASC")->select()));
}
[php]
//如果要在模板中输出变量,必须在在控制器中把变量传递给模板,系统提供了assign方法对模板变量赋
值,无论何种变量类型都统一使用assign赋值。
$this->assign("serviceProduct", $serviceProduct);
$this->display();
}else{
if ($id > 0){
$this->display("detail");
}else{
$this->assign('prod_en', $prod);
$clsList = M("question_class")->order("oid ASC")->select();
$this->assign('clsList', $clsList);
$qusList = M("question")->order("oid ASC")->select();
$this->assign('qusList', $qusList);
$this->display("list");
}
}
}
模板代码:
[html]
<volist name="serviceProduct" id="sp" key="i">
<dl class="dlist odd">
<dt>{$sp.srvName}</dt>
<volist name="sp.product" id="pd" key="j">
<dd><a href="/index.php/question?prod_en={$pd.prod_en}">{$pd.prod_cn}</a></dd>
<if condition="$j lt count($sp['product'])">
<dd>|</dd>
</if>
</volist>
<if condition="count($sp['product']) EQ 0">
<dd> </dd>
</if>
</dl>
</volist>
当使用多重嵌套循环时,需要为每一个volist指定key值,通过
[html]
<if condition="$j lt count($sp['product'])">
判断是否为数组中的最后一个元素。
Volist标签实现隔行变色
方法1:
[html]
<volist name="newslist" id="vo" mod="2">
<li <eq name="mod" value="0"> style="background-color:#000;"</eq>><span>·<a href="{$vo.url}">{$vo.title}</a></span><span>{$vo.edittime|date="Y年m月d日",###}</span><span>{$vo.author}</span></li>
</volist>
volist 中的 mod 参数相当于指定一个频率,系统会将当前的实际记录对 mod 参数值求余(PHP中的%运算符)运算。而配合判断标签(如eq标签),就可以按照频率控制输出的数据或数据显示的格式。
方法2:
[html]
<volist name="newslist" id="vo" key="k">
<li <if condition="$k%2== '0'"> style="background-color:#000;"</if >><span>·<a href="{$vo.url}">{$vo.title}</a></span><span> {$vo.edittime|date="Y年m月d日",###}</span><span>{$vo.author}</span></li>
</volist>
下面再列出一个 Volist 循环table里的tr、td的实例:
[html]
<tr bgcolor="#FBFCF1">
<volist name="siteurl" id="site" mod="4">
<eq name="mod" value="0"></tr><tr bgcolor="#FBFCF1"></eq>
<td width="25%"><a href="{$site.url}" target="_blank">{$site.name}</a></td>
</volist>
</tr>
[php]
public function index(){
$prod = I("get.prod_en");
$id = I("get.id", 0, "int");
if ($prod == ""){
$serviceProduct = array();//多重循环遍历的数组
[php]
//数据保存在两张表中,这里通过循环初始化$serviceProduct数组
$service = M("product_class")->order("oid ASC")->select();
for ($i = 0; $i < count($service); $i++)
{
array_push($serviceProduct, array("srvName"=>$service[$i]["pc_cn"], "product"=>M("product")->where("prod_class_id=".$service[$i]["pcid"])->order("oid ASC")->select()));
}
[php]
//如果要在模板中输出变量,必须在在控制器中把变量传递给模板,系统提供了assign方法对模板变量赋
值,无论何种变量类型都统一使用assign赋值。
$this->assign("serviceProduct", $serviceProduct);
$this->display();
}else{
if ($id > 0){
$this->display("detail");
}else{
$this->assign('prod_en', $prod);
$clsList = M("question_class")->order("oid ASC")->select();
$this->assign('clsList', $clsList);
$qusList = M("question")->order("oid ASC")->select();
$this->assign('qusList', $qusList);
$this->display("list");
}
}
}
模板代码:
[html]
<volist name="serviceProduct" id="sp" key="i">
<dl class="dlist odd">
<dt>{$sp.srvName}</dt>
<volist name="sp.product" id="pd" key="j">
<dd><a href="/index.php/question?prod_en={$pd.prod_en}">{$pd.prod_cn}</a></dd>
<if condition="$j lt count($sp['product'])">
<dd>|</dd>
</if>
</volist>
<if condition="count($sp['product']) EQ 0">
<dd> </dd>
</if>
</dl>
</volist>
当使用多重嵌套循环时,需要为每一个volist指定key值,通过
[html]
<if condition="$j lt count($sp['product'])">
判断是否为数组中的最后一个元素。
Volist标签实现隔行变色
方法1:
[html]
<volist name="newslist" id="vo" mod="2">
<li <eq name="mod" value="0"> style="background-color:#000;"</eq>><span>·<a href="{$vo.url}">{$vo.title}</a></span><span>{$vo.edittime|date="Y年m月d日",###}</span><span>{$vo.author}</span></li>
</volist>
volist 中的 mod 参数相当于指定一个频率,系统会将当前的实际记录对 mod 参数值求余(PHP中的%运算符)运算。而配合判断标签(如eq标签),就可以按照频率控制输出的数据或数据显示的格式。
方法2:
[html]
<volist name="newslist" id="vo" key="k">
<li <if condition="$k%2== '0'"> style="background-color:#000;"</if >><span>·<a href="{$vo.url}">{$vo.title}</a></span><span> {$vo.edittime|date="Y年m月d日",###}</span><span>{$vo.author}</span></li>
</volist>
下面再列出一个 Volist 循环table里的tr、td的实例:
[html]
<tr bgcolor="#FBFCF1">
<volist name="siteurl" id="site" mod="4">
<eq name="mod" value="0"></tr><tr bgcolor="#FBFCF1"></eq>
<td width="25%"><a href="{$site.url}" target="_blank">{$site.name}</a></td>
</volist>
</tr>
相关文章推荐
- php开启openssl
- php缓存技术
- PHP设计模式系列 - 单例
- 用PHP的imagettftext绘制图片的换行问题。
- php 二分查找
- php 常用经验
- php.ini配置文件详解(为了安全,禁止一些高风险的函数)
- 再给我一次机会的话,我选择做一个安静的程序猴子--Laravel share
- php+ajax实现无刷新的新闻留言系统
- 使用xhprof对php性能追踪分析
- VSFTP配置
- PHP调用WEBSERVICE接口常见问题答疑以及总结
- 浅谈Laravel框架的CSRF
- PHP—水印
- laravel 外键schema RBAC
- 数据共享ContentProvider,ContentResolver
- mac下phpstorm左侧的project列表找不到了
- php常用函数
- PHP SPL的使用
- php异步学习(2)