2016-04-02 68 views
1

我想開發一個網站使用模板方法我創建了不同的文件,並希望運行一個查詢,該查詢將可用於所有模板是否有可能做到這一點?就像我想給你什麼,我在這裏做控制器一個例子,我已經創建了這樣的模板codeigniter

$data['navigation'] = 'templates/main_menu'; 
$this->load->view('main'); 

好一個變量所以現在這裏是我的主要觀點確實是我包括頁眉和頁腳有並呼籲導航文件動態像這樣

$this->load->view($navigation); 

好了,所以現在我所試圖做的是要獲取存儲在數據庫和其他設置的圖標也讓我放在一個查詢在頭文件

<?php $settings = $this->db->get_where('settings', array('id' => 2));\\ This query is just placed above the doctype in the header file and I would like to be called every where ?> 

templates/main_menu.php 
$settings->row()->header_bg_color 

但是我收到一個錯誤消息:未定義的變量:設置,如果我把這個設置查詢內main_menu.php文件它的作品,所以就像我應該是這樣的意思是再次調用查詢沒有意義,再次,如果我會要求什麼是最好的辦法做什麼,如果它是如果我把這個設置查詢在模型中,我將如何訪問它是可能的告訴我

謝謝

+0

頭文件數據不能被加工成其它視圖,笨是MVC結構你必須通過將數據作爲參數由視圖例如訪問$ this-> load-> view('$ navigation',$ data);在這裏您可以做的是創建一個通用函數文件,在其中編寫查詢並將其包含在控制器中,然後將該數據傳遞給您的視圖。 – JiteshNK

+0

您可以在asnwer中提交示例代碼,因爲我是codeigniter的新成員,如果我在模型中創建它應該能夠在視圖中調用該怎麼辦? –

+0

我希望你已經得到你的答案。 – JiteshNK

回答

0

嗨,下面是控制器的代碼。我已經創建了common_library.php文件,我在其中編寫了我想要使用所有視圖的所有常用功能。

class Maintenance extends CI_Controller { 
function Maintenance() { 
parent::__construct(); 
// file for all common function 
    include('application/controllers/common/common_library.php'); 
    $this->load->model('maintenance_model'); 
    $this->load->library('session'); 
    $this->load->library('form_validation'); 
} 
function index(){ 
/* 
    * @ desc : default function that loads the maintenance_view. 
    * 
    * 
    */ 
    $data['common_query'] = commonQuery() // define this function in common_library file 
    $data['model_data'] = $this->maintenance_model->projectdetail(); 
    $data['formtitle'] = 'Maintenance List | BMS'; 

    $this->load->view('maintenance_view',$data); 
} 
} 
+0

如果需要在控制器中加載控制器,最好使用HMVC。 – user4419336

+0

@ wolfgang1983如果你指向這一行include('application/controllers/common/common_library.php');那麼只是澄清這是一個普通的功能文件而不是控制器。它只是在控制器文件夾中的地方,因爲我打算僅將此文件用於控制器。 – JiteshNK