2013-05-03 86 views
1

我是codeigniter的新手,我試圖編寫一個函數,基本上會保存一個名稱和URL到會話數據,每當你訪問某個頁面,然後報告回來在屏幕上的一個小部件。從codeigniter中的視圖調用控制器功能

它應該作爲一種歷史功能,用於訪問哪些頁面以及按什麼順序訪問。到目前爲止,在處理測試數據時,它非常棒!但我想弄清楚如何在被訪問的每個頁面上調用「添加」功能,因此我們可以提供訪問過的頁面的名稱和URL。有沒有辦法做到這一點?或者,有什麼方法可以在訪問完一個頁面後報告一組變量,如名稱和網址?

例如:說我訪問了page1,page2,page3和page6,我希望每個人都顯示在我的歷史記錄功能中。在相應的網頁我會載入歷史的觀點,我想打電話給歷史的控制器功能"add(name,url)"在像這樣填寫的:

add('page1','page1.php') 

但我知道,你不應該訪問控制器的歷史,因爲這不是它應該完成的方式,但我想不出有什麼更好的方法來做到這一點。任何幫助,將不勝感激。

+1

爲什麼不在你的控制器行爲中添加與頁面相關的條目? – 2013-05-03 19:26:29

回答

9

我不知道你爲什麼不在每一個控制器上調用它。 但如果你要撥打的電流控制器的功能,你必須讓電流控制器的情況是這樣的:

<?php 
$CI =& get_instance(); 
$CI->method($param); 
?> 
+0

比方說,我有一個包含目錄數據的迭代器對象。據我所知,沒有內置的函數可以在迭代器中的每個項目上調用函數。但是,當我在視圖中迭代它們時,我可以訪問每個元素,因此在那裏調用控制器的「映射函數」是有意義的。什麼是更好的方法? – 2014-06-08 19:37:54

+0

非常感謝。 – 2015-12-04 06:01:00

0

這樣做將是把一個方法的構造函數的最簡單的方法你的班。這樣,無論你在做什麼,它總會首先運行。記住,你可以在控制器中做任何事情 - 會話,驗證等 - 你可以在模型中做。

function __construct() { 
parent::__construct(); 

// load model that has page tracker methods 
$this->load->model('pagetracker_m'); 

// call the method to track the pages, and have it return the results 
if (! $this->history = $this->pagetracker_m->_trackpage();) { 
    echo 'Error getting history ' ; } 

} // end construct 


function something() { 

// pass history to $data, then use echo $history->firstpage, etc in view 
$data['history'] = $this->history ; 

    // call your view etc 

} 
相關問題