2013-05-15 36 views
0

在我的控制器結束時,我有這樣的代碼:Flashdata鑑於空

print_r($this->session->all_userdata()); 
$this->load->view('common/site_header'); 

在我site_header文件的第一行,我有:

print_r($this->session->all_userdata()); 

第一print_r包含;

[flash:new:error] => Formulier niet correct ingevuld. 

site_header文件的print_r不包含此項,之後我重新提交表單的第二print_r包含:

[flash:old:error] => Formulier niet correct ingevuld. 

在我看來,就好像視圖有不同的會話對象,是背後的一個要求或什麼的。

如何在同一個請求中的視圖中獲得flashdata?只爲下一個請求

+0

會話對象是在CI全局可用。它只有一個實例,所以你的控制器和視圖共享它。對我來說,它看起來像你在顯示視圖之前重置你的Flash數據。你有沒有定義任何鉤子重置flashdata? – thpl

+0

您可以在視圖前嘗試$ this-> session-> keep_flashdata(var)嗎?阿洛斯,你是否在你的模型或控制器中設置了flash數據? – karmafunk

+0

我在我的控制器的print_r正上方設置flashdata。我也確認會話構造函數在這個請求中被調用兩次。我有自動加載會話,我沒有任何鉤子,正如你可以看到,我沒有任何代碼之間的第一個print_r和print_r在視圖文件中 – FlyingNimbus

回答

1

閃存數據是可用的,使用$this->session->userdata();代替

+0

我對如何使用flashdata有一個錯誤的理解,謝謝 – FlyingNimbus

+1

Flashdata僅適用於下一個服務器請求,而不是第二個。如果你想保留一個額外的請求,你需要使用'$ this-> session-> keep_flashdata('item');' – jleft

+0

@ user1160265不用再檢查Lefters是怎麼說的;) – sbaaaang