2012-10-10 70 views

回答

13

這將視情況而定。如果你想保留一段時間的數據,那麼會話數據就是要走的路。但是,如果您只需要使用一次,則閃存數據可能更合適。

第一步是初始化會話庫:,

$this->session->set_flashdata('item', $myVar); 

最後,在第二控制器,取數據:

$this->load->library('session'); 

然後存儲在閃存數據的信息

$myVar = $this->session->flashdata('item'); 

顯然這意味着你不得不再次初始化會話庫從第二個控制器,或創建您自己的基礎控制器加載會話庫,並讓你的兩個控制器繼承該控制器。

+0

我無法檢索該項目。怎麼了 。 – Aditi

+0

@Aditi是否有錯誤訊息? –

+0

沒有錯誤消息 – Aditi

7

我覺得笨,你不能傳遞變量,兩個不同的控制器之間。一個明顯的機制是使用會話數據。

+4

我同意這一觀點的變量傳遞值。 CI具有通過URI訪問控制器的特定路由。 會話數據會在這裏有用 $ this-> sessions-> set_userdata('data',$ data); redirect('second_cont.php'); – kjurkovic

7

好吧,這裏是一些關於MVC最容易報價:

A控制器是拍攝輸入,一個模型是你的邏輯,並且,視圖是用於顯示。

現在,嚴格來說,你不應該想要從控制器發送數據到另一個。我想不出任何需要的情況。


但是,如果是絕對需要它,那麼你可以簡單地使用redirect只是重定向到另一個控制器。

喜歡的東西:

// some first_cont.php code here 
redirect('/second_cont/valuereciever/value1') 


// some second_cont.php code here 
public function valureciever($value){ 
    echo $value; // will output value1 
} 
4

在Codeigniter中有許多方法可以將值從一個控制器傳遞到其他控制器。

您可以使用codeigniter Session將數據從一個控制器傳遞到另一個控制器。

對於您必須首先包括會議

$this->load->library('session'); 

那麼你可以設置使用變量名的閃存數據值庫。

// Set flash data 
$this->session->set_flashdata('variable_name', 'Value'); 

他們,你可以得到你想要通過使用笨會議flashdata

// Get flash data 
$this->session->flashdata('variable_name'); 

第二個選項笨讓你的URL從控制器的名稱,方法名稱和值,然後控制研究重定向值您可以在另一個控制器中獲取該值。

// Passing the value 
redirect('/another_controller_name/method_name/variable'); 

然後你就可以在另一個控制器中獲得的價值

public function method_name($variable) 
{ 
echo $variable; 
} 

這一切....

+0

您的回答不會改變任何內容,它已經在上面回答和與現有答案完全相同。 –

+0

@法哈德,我不同意。這個答案顯示了通過變量的兩種方式:由Matthew Daly和kalpesh patel以及Prasanth回答所描述的那些方式。事實上,我不確定這對我來說不是最好的答案。 – Line

+0

如果用戶刷新頁面,該怎麼辦?閃存數據變量不再存在,所以...代碼將失敗 – Diego

1

如果在第一控制器使用會話,然後在第一個控制器不取消設置該會話,而是存儲您想要的值在其他控制器中,例如,

$sess_array = array('value_name1' => 'value1', 'value_name2' => 'value2'); 
$this->session->set_userdata('session_name', $sess_array); 

N的其他控制器重新加載此會話

$session_data= $this->session->userdata('session_name'); 
$any_var_name = $session_data['value1']; 
$any_var_name = $session_data['value2']; 

這是怎麼了,你可以從一個控制器到另一個....

相關問題