2013-04-09 69 views
1

我試圖獲得來自數據庫的網站的任何頁面滾動的新聞,而無需傳遞變量在網站的每個控制器站點範圍。所以我決定使用鉤子而不是在每個控制器中傳遞滾動變量。笨-fetching數據與笨鉤

我確實創造了這樣的

class Scroll 
{ 

function getScroller() 
{ 

    $data = array(); 

    $CI =& get_instance(); 

    $CI->db->where('a_status','active'); 
    $CI->db->limit(4); 
    $CI->db->order_by('id','desc'); 

    $Q = $CI->db->get('news'); 
    if($Q->num_rows() > 0){ 
    foreach($Q->result_array() as $row){ 
     $data[] = $row; 
    } 
    } 
    $Q->free_result(); 
    return $data; 
} 



} 

一類我現在得到的是

Severity: Notice 

Message: Trying to get property of non-object 
Call to a member function get() on a non-object in E:\xampp\htdocs\ 

誰能幫我如何做到這一點?謝謝我想在任何控制器的視圖中自動獲取scrollernews,而無需傳入每個控制器。謝謝

回答

0

如果你在視圖層次上定義它,那就沒有必要這樣做。

您可以直接在視圖中定義數據庫請求。

其他方法將是具有分離的控制器,其與單獨的視圖,並將其裝載在頁面通過iframe中。它通常用於可以在以後加載到另一個頁面的「Web小部件」。

0

擴展CI控制器的核心類應該會減少麻煩。 http://ellislab.com/codeigniter/user-guide/general/core_classes.html

應用/核心/ MY_Controller.php

class MY_Controller extends CI_Controller { 

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

     //By do this, all controllers who use this class as parent controller 
     //will have $news in their views 
     $this->load->vars(array( 
      'news' => array() 
     )); 
    } 
} 

應用/控制器/的welcome.php

class Welcome extends MY_Controller { 

    public function index() 
    {  
     $this->load->view('welcome_message'); 
    } 
} 

應用/視圖/ welcome_message.php

var_dump($news); 
0

使用分離的庫或幫助程序並在控制器的結構上調用該方法,例如:

class My_Controller extends CI_Controller(){ 

    function __construct(){ 
     parent::__construct(); 
    //load your library 
    //call your library method 
    } 
    }