簡體   English   中英

Codeigniter網站廣泛的意見

[英]Codeigniter site wide views

我需要在codeigniter網站的側邊欄中實現廣告。

廣告是動態的並且從數據庫中檢索。 我當前的設置是我有主模板文件,我將主視圖文件的名稱傳遞給變量,如下所示:

$data['main_content'] = 'some_view_file';
$this->load->view('template_file', $data);

我想到了以下步驟:

  1. 在我的MY_Controller一個函數get_ads()並檢索所有廣告並將其返回
  2. 在我的每個控制器的方法中,我訪問上面創建的函數並將其傳遞給模板

$data['ads'] = $this->get_ads();
$data['main_content'] = 'some_view_file';
$this->load->view('template_file', $data);

但是上面方法的問題是,我需要設置$data['ads'] = $this->get_ads(); 在加載視圖之前的所有方法中。

什么是處理上述問題的更好方法?

創建一個名為Ads.php的CodeIgniter庫

class Ads
{

    private $CI;

    public function __construct()
    {
        $this->CI = & get_instance();
    }

    public function my_ads()
    {
        // get the ads from database //
        return $this->CI->db->select('field1, field2, field3')->from('ads_table')->get()->result();
    }

}

自動加載庫(因為您需要在所有視圖中使用廣告)。 轉到./application/config/autoload.php

/*
  | -------------------------------------------------------------------
  |  Auto-load Libraries
  | -------------------------------------------------------------------
  | These are the classes located in the system/libraries folder
  | or in your application/libraries folder.
  |
  | Prototype:
  |
  | $autoload['libraries'] = array('database', 'session', 'xmlrpc');
 */

$autoload['libraries'] = array('ads');

現在,您可以使用CI檢索整個CI系統中的數據

$ads = $this->ads->my_ads();

希望這對你有所幫助。 謝謝!!

MY_Controller添加一個變量:

class MY_Controller extends CI_Controller {

      public $data;

      public function __construct() {
          $this->data['ads'] = $this->get_ads();      
          //etc.
      }
    //etc.
}

在每個控制器中更新$data變量並像這樣調用視圖:

$this->data['main_content'] = 'some_view_file';
$this->load->view('template_file', $this->data);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM