2014-10-12 86 views
0

問題:我似乎無法從視圖調用控制器方法。 原因:因爲我想在該方法和環路傳遞參數的數據如何在Codeigniter中使用控制器方法

鑑於:

foreach($data as $key => $val){ 
    foreach($methodData($val['dataID']) as $mKey => $mVal){ 
     echo $mVal['name']; 
    } 
} 

回答

0

這不是在MVC模式recomended。您應該只在視圖中顯示數據(您從控制器傳遞的數據)。

考慮如此設置您的控制器中所需的數據,並將正確的模型傳遞給您的視圖。

+0

所以,我應該怎麼辦循環數據?我會在控制器中創建新的方法並從該方法解析? – Gabriel 2014-10-12 13:49:47

+0

好吧,我只是循環並在控制器中創建xml/array並讀取視圖中的數據。感謝您的回答。 – Gabriel 2014-10-12 14:02:03

+0

您的循環應該位於模型中,而不是控制器,您的模型應該將準備好的數據返回給控制器和控制器,只應將這些數據傳遞給視圖。 – ahmad 2014-10-12 16:46:38

0

可以說有一個叫'叢林'的模型。在模型中,我們使用搜索詞搜索大象。如果沒有大象回來,我們加載搜索表單並將搜索詞傳回給它。

在控制器

// check first if no results came back from the model 
    if(! $data['elephants'] = $this->jungle->getElephants($searchterm)){ 

    $data['searchterm'] = $searchterm ; 

    $this->load->view('searchform_elephants', $data); } 

    // we have results, $elephants data structure is assigned to $data 
    // and passed to the view so it can be accessed on the view page 
    else { $this->load->view('show_elephants', $data); } 

如果一些大象回來,那麼$大象對象(或陣列)被分配給$的數據,然後它被傳遞到視圖。

然後在您的視圖中 - 您可以根據數據結構的類型對結果進行預處理。最後 - 如果您知道您從數據庫中檢索的內容等是單個記錄,則可以將查詢結果分配給row()。然後在視圖中,您不必做一個foreach等。例如,如果你用的$ id

// controller 
    $data['snowflake'] = $this->blizzard->getFlakeBy($id) ; 

    // view 
    echo $snowflake->firstname ; 

此頁面爲DEETS得到一個獨一無二的雪花:https://ellislab.com/codeigniter/user-guide/database/results.html

相關問題