2011-04-24 59 views
4

我在想如何$this->load->vars()在CodeIgniter中工作。文檔相當模糊。

我有以下代碼:

$init = $this->init->set(); 

    $this->load->view('include/header', $init); 
    $this->load->view('include/nav'); 

    $dates = $this->planner_model->create_date_list(); 
    $this->load->view('planner/dates_content', $dates); 

    $detail = $this->planner_model->create_detail_list(); 
    $this->load->view('planner/detail_content', $detail); 


    $this->load->view('include/footer'); 

不過,我還需要在我detail_content鑑於$dates陣列。我試圖用$this->load->vars()加載它,希望它會追加到$detail陣列,因爲CI文件規定如下:

你可以有多次調用這個函數。數據被緩存併合併到一個數組中以轉換爲變量。

如果我做$detail['dates'] = $dates;會起作用嗎?它會追加$dates數組到$detail['dates']然後?

在此先感謝。

回答

5

$this->load->vars()非常適合此目的。試試這個:

$init = $this->init->set();// Won't be passed to the next 2 views 
$this->load->view('include/header', $init); 
$this->load->view('include/nav'); 

$dates = $this->planner_model->create_date_list(); 
$this->load->vars($dates); 
$this->load->view('planner/dates_content'); 

$detail = $this->planner_model->create_detail_list(); 
$this->load->vars($detail); 
$this->load->view('planner/detail_content'); 

看起來很奇怪,我是,你通常傳遞一個關聯數組數據,如$data['my_var_name'] = $var_value,所以我想你的模型調用返回已經結構與變量名(數組鍵)的數據你會在我看來很奇怪的視角中使用,但是我對你的應用一無所知。

這裏的一個更「傳統的」版本:

$data['dates'] = $this->planner_model->create_date_list(); 
$this->load->view('planner/dates_content', $data); 

$data['detail'] = $this->planner_model->create_detail_list(); 
// receives both dates and detail 
$this->load->view('planner/detail_content', $data); 
+0

但是,通過您的代碼,我可以訪問我的detail_content視圖中的$ dates數組嗎?感謝您的快速回復。 – cabaret 2011-04-24 12:29:06

+0

是的,您可以訪問這些變量。 – 2011-04-24 12:29:42

+0

我的數據確實已經從我的模型中返回。請問爲什麼這是奇怪的?它本身是'壞'嗎?謝謝。 – cabaret 2011-04-24 12:31:31

2

你有沒有試過只是建立一個數組,你傳遞給不同的意見?我發現$this->load->vars()表現出乎意料。

+0

只是在發佈此消息時更新了我的帖子。 :) – cabaret 2011-04-24 12:22:02

+0

Y建立一個像'$ viewdata ['dates']''一樣的數組。然後用'$ this-> load-> view('header',$ viewdata)'加載你的視圖。然後你可以在你的視圖中使用'echo $ dates'。您可以將相同的數組傳遞給每個視圖。 – 2011-04-24 12:36:15

2

在其他的答案陳述,並且在用戶指南,使用$this->load->vars()是相同的,包括在$this->load->view()第二個參數。

但從用戶指南:

你可能想使用此功能分別是,如果你想設置一些全局變量在控制器的構造函數,並讓他們在任何視圖成爲可用的原因文件從任何函數加載。

對我而言,這是您使用$this->load->vars()的唯一原因。正如@madmartigan所說,使用第二個參數的視圖加載器更方便。