2010-10-27 74 views
0

我有從我的模型加載的建築物列表。這些建築都顯示在一個循環我認爲內像這樣:Codeigniter:根據URI段在循環中加載不同視圖

控制器

public function index() { 
$data['buildings'] = $this->Base_Model->getUserBuildings(); 
$this->load->view('game', $data); } 

查看

<?php foreach($buildings as $b): ?> 
    <div class="building">[...]</div> 
<?php endforeach; ?> 

每個構建有一些「動作」可能爲「信息等「,」價格「,」顏色「。默認狀態顯示「信息」。

我希望能夠加載特定建築物的特定操作。

例如,我有一家工廠和一家藥店,默認情況下都顯示「信息」選項卡。 如何,如果我點擊藥店的「價格」標籤,顯示工廠的「信息」標籤和藥店的「價格」標籤?

我的URL看起來像這樣:

默認的

網站/建築

秀藥店

網站/建築/價格/藥店

的價格

也許我應該找一個局部視圖解決方案,但我真的需要一個意見或解決方案;)

非常感謝你提前(我爲我的英語不好,然後道歉太)

回答

0

沒有knowi更多關於設置它的難言之隱,但你會想在你的價格()函數

某些有條件的是從數據庫中獲得的信息/價格操作?

如果是像

<?php foreach($buildings as $b): ?> 
    <div class="building"> 
    <?php if($this->uri->segment(3)==$b['building_name']) { 
     echo 'Price'; 
    } else { 
     echo 'Info'; 
    } 
    ?>  
    </div> 
<?php endforeach; ?> 

但不知道更多的關於系統說,它是很難給出一個像樣的答案。

+0

謝謝羅斯,它讓我相信在視圖中進行測試是「最佳」解決方案。 – Magikman 2010-11-02 21:33:45

0

像這樣的東西:

$this->Base_Model->getUserBuildingFromWebname($webname); 

然後在您的樓宇控制器,你可以補充一點:

public function index($webname = null) 
{ 
    if(!is_null($webname)) 
    $buildingId = $this->Base_Model->getUserBuildingFromWebname($webname); 
    else 
    $buildingId = null; 

    $data["showBuildingDetails"] = $buldingId; 

    //the rest of your index() function 
} 

public function price ($webname) 
{ 
    return $this->index($webname); 
} 
+0

謝謝你的答案,但實際上我得到索引函數中的建築物的整個列表。然後在我看來,我遍歷並默認顯示「信息」。想要我想要顯示的信息,但如果一個建築物通過網址,那麼我會顯示其他人的信息和通過的價格。我以一種「醜陋」的方式做了一個測試,但我並不喜歡它。任何想法表示讚賞,再次感謝你! – Magikman 2010-10-29 05:40:31