ThinkPHP學習(四)volist標籤高階應用之多重巢狀迴圈

mybwu_com發表於2014-05-05

Action程式碼:

    public function index(){
		$prod = I("get.prod_en");
		$id = I("get.id", 0, "int");
		if ($prod == ""){
			$serviceProduct = array();//多重迴圈遍歷的陣列
//資料儲存在兩張表中,這裡通過迴圈初始化$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()));
			}
//如果要在模板中輸出變數,必須在在控制器中把變數傳遞給模板,系統提供了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");
			}
		}
	}
模板程式碼:

	<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值,通過
<if condition="$j lt count($sp['product'])">
判斷是否為陣列中的最後一個元素。


相關文章