有沒有一種方法來識別類似print_r($model)
或print_r($controller)
的視圖的型號名稱和控制器名稱?在Codeigniter中:如何識別視圖的模型和控制器?
例如:
view.php
<div class="data">
<?php
echo "this is from".$controller;
echo "this is from".$model;
?>
</div>
有沒有一種方法來識別類似print_r($model)
或print_r($controller)
的視圖的型號名稱和控制器名稱?在Codeigniter中:如何識別視圖的模型和控制器?
例如:
view.php
<div class="data">
<?php
echo "this is from".$controller;
echo "this is from".$model;
?>
</div>
你可以利用這個得到控制器的名稱:
$this->router->fetch_class();
你要通過控制器的名稱,查看(作爲變量)。
但是,您無法在視圖中識別模型 - 可能有多個模型(在一個控制器中)。最好的方法是在模型中創建方法並將其分配給傳遞給視圖的變量。
你不應該傳遞的東西從模型直奔視圖。 http://codeigniter.com/user_guide/overview/mvc.html和http://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);
}
視圖保持和你一樣有。
如果我有數百個模型和控制器,該怎麼辦?我只是想過使用它,但是當我完成識別 – kedomonzter
時,會花費我很長時間並撤銷。爲什麼您需要數百個控制器?你當然會先計劃你的申請,然後編碼。大多數應用程序不需要100個控制器或模型,除非它們非常複雜。 – Jakub
控制器可以從多個模型中調用,並且視圖由控制器指定(或包含在控制器指定的視圖中)。你真的不應該直接從模型中調用數據到視圖中。
如果您不使用路由(或以其他方式)更改段名稱,則可以從適當的URI段獲取控制器名稱。我不確定一次有兩個控制器是可能的。再一次,我從來沒有必要嘗試。
我想你可以在每個函數下手動設置控制器中的變量,並在頁面上將它們回顯出來,但是沒有內置的自動化方法來執行你正在尋找的任務。
你在混淆MVC是什麼,它不是一個「我從哪裏輸出」的問題,它只是組織,你可以在任何地方技術上輸出任何東西。但要正確做到這一點,只需要在VIEW部分輸出,模型傳遞給控制器,控制器進行查看等。 – Jakub