2010-10-27 56 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

相关问题