我可以在視圖文件中設置變量嗎?Codeigniter - 在視圖中設置變量
的爲例: 我有一個控制器:的welcome.php 其負載:
$this->load->view('header');
$this->load->view('main');
$this->load->view('footer');
我需要設置一個變量上的文件main.php,並獲得footer.php
它的可能嗎?
我可以在視圖文件中設置變量嗎?Codeigniter - 在視圖中設置變量
的爲例: 我有一個控制器:的welcome.php 其負載:
$this->load->view('header');
$this->load->view('main');
$this->load->view('footer');
我需要設置一個變量上的文件main.php,並獲得footer.php
它的可能嗎?
無法在視圖文件中設置變量並從另一個視圖文件訪問變量。沒有理由你應該在你的視圖文件中設置變量。控制器應該處理所有的應用程序邏輯,所以你應該在那裏設置變量。我會建議閱讀用戶指南或閱讀一些文章以更好地理解MVC原則。
要訪問多個視圖中的相同變量,請將其傳遞給您加載的每個視圖。
// Set your variable
$data['variable'] = 'value';
// Pass variable to multiple views
$this->load->view('main', $data);
$this->load->view('footer', $data);
你可以在一個視圖中設置一個變量,並在另一個視圖中使用它。我一直這樣做。我在下面發佈了我的答案。 –
這並不總是關於模型相關的變量,是古典的。例如,我使用它來設置「內容」視圖中某些javascript的名稱,然後在所有HTML內容之後將這些文件加載到頁腳視圖中。 –
您可以通過這兩個陣列或對象到您的視圖,例如:
$data = new StdClass;
$data->title = "The Title";
$data->content = "The Content";
$this->load->view('main', $data);
或
$data = new SomeClass;
$this->load->view('main', $data);
此外,在各查看您都能夠通過不同的數據:
$data1 = array("key" => "val");
$data2 = $this->some_class->some_method($params);
$data3 = $this->another_class->another_method($params);
$this->load->view('navigation', $data1);
$this->load->view('main', $data2);
$this->load->view('footer', $data3);
您可以像從控制器到視圖一樣將變量從一個視圖傳遞到另一個視圖。你只需要加載設置一個變量,使用視圖前視圖文件變量:
$this->load->view('main'); //load before
$this->load->view('footer'); //load after
內main.php做$this->load->vars(array('your_variable'=>'it's value'));
,你就可以調用它在頁腳像對其他任何變量。唯一的要求是在footer.php之前加載main.php。
在視圖內部設置變量並不是一個好習慣。如果你打算使用這種方法,最好從控制器調用'$ this-> load-> vars()'而不是視圖,這樣你就不用擔心你的順序了加載視圖。 – birderic
@birderic絕對。我只是在極端情況下這樣做。但問題不在於最佳實踐,而在於如何從視圖加載變量。 –
你的意思是你想在視圖中設置一個變量以備後用?因爲,當然,您可以使用標準PHP在HTML中設置變量:'<?php $ some_variable ='某個值'; ?>'。 – Alex