2012-07-14 25 views
0

我一直在尋找CodeIgniter模板系統,到目前爲止,它允許您更改頁眉或頁腳文件內的內容,但我正在尋找一種方法將數據從模型自動加載到頭文件中(取決於模板)。CodeIgniter中的模板系統允許我將數據從模型自動傳遞到標題中?

例如,在我的標題中,它顯示用戶的用戶名和收件箱。我需要從模型和用戶用戶名中加載用戶未讀消息。這取決於模板,但是 - 我只想在用戶登錄時加載該信息。

回答

1

將數據從模型傳遞到視圖不是一種好的做法。

您應該先將數據傳遞給控制器​​,然後才傳遞給您的視圖。

http://codeigniter.com/user_guide/overview/appflow.html

正如你可以看到這個應用程序流程圖上 - 有模型和視圖之間沒有直線。

如果您有興趣在「佈局」中顯示模型數據 - 請使用掛鉤!

http://codeigniter.com/user_guide/general/hooks.html

定義 「pre_controller」 鉤子,獲取CI實例,負荷模型,retrive數據,並在你的佈局顯示。

啓用鉤

$config['enable_hooks'] = TRUE; 

定義如鉤:

$hook['pre_controller'] = array(
           'class' => 'MyClass', 
           'function' => 'Myfunction', 
           'filename' => 'Myclass.php', 
           'filepath' => 'hooks', 
           'params' => array('beer', 'wine', 'snacks') 
           ); 

例如

掛鉤

<?php 

if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Gamescount 
{ 
     private $model_name = ''; 

     public function __construct() 
     { 
       $this->CI =& get_instance(); 
       $this->model_name = 'Games_model'; 
       $this->CI->load->database(); 
       $this->CI->load->model($this->model_name); 
       $this->CI->load->helper('url'); 
     } 

     public function count_games() 
     { 
       $all_games = $this->CI->Games_model->getAllGames(); 
       $this->CI->gamescount = count($all_games); 
     } 
} 

?> 

在你的佈局,你可以得到gamescount值一樣

<?php echo $this->gamescount; ?> 
+0

也許我被誤解了?我不想直接將數據加載到模型的視圖中,而是更多地查看某種模板庫,使我可以從模型加載數據以進行顯示。因此,模板庫例如充當模型和標題視圖之間的媒介。 – Muggles 2012-07-15 17:11:12

+0

你需要在「佈局」中顯示你的數據?使用鉤子...查看編輯的帖子以獲取更多信息。 – Parker 2012-07-16 20:56:53

+0

這似乎是我在找什麼,非常感謝。 – Muggles 2012-07-24 20:57:17

-1

帕克提到的,這不是一個好主意,打電話從視圖模型。但如果你仍然想這樣做,你可以做到。

獲取笨實例如下

$CI =& get_instance(); 

使用笨例如,你可以調用模型。

0

實現代碼來檢索控制器中的數據,然後通過AJAX加載它並顯示在標題中。如果不打破Codeigniter的做法,這是一個可行的解決方案。

+0

我猜想收件箱中未讀項目的數量是因爲它必須通過ajax進行更新,不過對於用戶名,我可能會在用戶登錄時將其存儲在會話中。 – Muggles 2012-07-15 16:53:02

+0

當用戶在控制器中登錄時,請將用戶名設置爲會話,之後可以在不通過的情況下使用。所以不需要從模型加載數據。如果您希望某些工具生成Codeigniter CRUD功能,那麼您可以查看www.thephpcode.com – Nish 2012-07-16 05:56:37

相關問題