2011-09-28 61 views
1

有沒有一種方法來識別類似print_r($model)print_r($controller)的視圖的型號名稱和控制器名稱?在Codeigniter中:如何識別視圖的模型和控制器?

例如:

view.php

<div class="data"> 
<?php 
echo "this is from".$controller; 
echo "this is from".$model; 
?> 
</div> 
+2

你在混淆MVC是什麼,它不是一個「我從哪裏輸出」的問題,它只是組織,你可以在任何地方技術上輸出任何東西。但要正確做到這一點,只需要在VIEW部分輸出,模型傳遞給控制器​​,控制器進行查看等。 – Jakub

回答

2

你可以利用這個得到控制器的名稱:

$this->router->fetch_class(); 

你要通過控制器的名稱,查看(作爲變量)。
但是,您無法在視圖中識別模型 - 可能有多個模型(在一個控制器中)。最好的方法是在模型中創建方法並將其分配給傳遞給視圖的變量。

2

你不應該傳遞的東西從模型直奔視圖。 http://codeigniter.com/user_guide/overview/mvc.htmlhttp://codeigniter.com/user_guide/overview/appflow.html

如果你想傳遞信息到你可以做到這一點。

model_name.php

//Class Declaration 

    function get_data() 
    { 
     return 'This is the Model Data'; 
    } 

Controller.php這樣

//Class Declaration 
    function index() 
    { 
     $data['controller'] = 'Data From the Controller'; 
     $data['model'] = $this->Model_Name->get_data(); 
     $this->load->view('view.php', $data); 
    } 

視圖保持和你一樣有。

+0

如果我有數百個模型和控制器,該怎麼辦?我只是想過使用它,但是當我完成識別 – kedomonzter

+1

時,會花費我很長時間並撤銷。爲什麼您需要數百個控制器?你當然會先計劃你的申請,然後編碼。大多數應用程序不需要100個控制器或模型,除非它們非常複雜。 – Jakub

2

控制器可以從多個模型中調用,並且視圖由控制器指定(或包含在控制器指定的視圖中)。你真的不應該直接從模型中調用數據到視圖中。

如果您不使用路由(或以其他方式)更改段名稱,則可以從適當的URI段獲取控制器名稱。我不確定一次有兩個控制器是可能的。再一次,我從來沒有必要嘗試。

我想你可以在每個函數下手動設置控制器中的變量,並在頁面上將它們回顯出來,但是沒有內置的自動化方法來執行你正在尋找的任務。

相關問題