$ this-> session-> set_flashdata()然后$ this-> session-> flashdata()在codeigniter中不起作用

时间:2012-10-28 14:12:21

标签: codeigniter session

请查看以下代码:

$this->session->set_flashdata('message', 'This is a message.');
var_dump($this->session->flashdata('message'));

返回bool(false)

我希望之后 NEED redirect()可以重新调用,因为有些时候我需要在设置flashdata之后立即调用它一个观点。


venkat评论后

修改

$this->session->set_flashdata('message', 'This is a message.');
$this->session->keep_flashdata('message');
var_dump($this->session->flashdata('message'));

不幸的是没有区别。

6 个答案:

答案 0 :(得分:29)

嗯,documentation确实说明了

  

CodeIgniter支持" flashdata"或仅会话数据   可用于下一个服务器请求,然后自动执行   清零。

是第一件事,这显然意味着你需要做一个新的服务器请求。 重定向,刷新,链接或其他一些意思,用于将用户发送到下一个请求。

如果您在同一个请求中使用flashdata,为什么还要使用flashdata?您也可以不使用flashdata或使用常规会话。

答案 1 :(得分:16)

// Set flash data 
$this->session->set_flashdata('message_name', 'This is my message');
// After that you need to used redirect function instead of load view such as 
redirect("admin/signup");

// Get Flash data on view 
$this->session->flashdata('message_name');

答案 2 :(得分:8)

要设置flashdata,您需要重定向控制器功能

$this->session->set_flashdata('message_name', 'This is test message');

//redirect to some function
redirect("controller/function_name");

//echo in view or controller
$this->session->flashdata('message_name');

答案 3 :(得分:5)

在Codeigniter中重定向后显示Flash消息

在您的控制器中设置此

<?php

public function change_password(){







if($this->input->post('submit')){
$change = $this->common_register->change_password();

if($change == true){
$messge = array('message' => 'Password chnage successfully','class' => 'alert alert-success fade in');
$this->session->set_flashdata('item', $messge);
}else{
$messge = array('message' => 'Wrong password enter','class' => 'alert alert-danger fade in');
$this->session->set_flashdata('item',$messge );
}
$this->session->keep_flashdata('item',$messge);



redirect('controllername/methodname','refresh');
}

?>

In Your View File Set this
<script type="application/javascript">
/** After windod Load */
$(window).bind("load", function() {
  window.setTimeout(function() {
    $(".alert").fadeTo(500, 0).slideUp(500, function(){
        $(this).remove();
    });
}, 4000);
});
</script>

<?php

if($this->session->flashdata('item')) {
$message = $this->session->flashdata('item');
?>
<div class="<?php echo $message['class'] ?>"><?php echo $message['message']; ?>

</div>
<?php
}

?>

请查看Displaying a flash message after redirect in Codeigniter

的以下链接

答案 4 :(得分:3)

更改你的config.php:

$config['sess_use_database'] = TRUE;

要:

$config['sess_use_database'] = FALSE;

它对我有用。

答案 5 :(得分:-1)

重定向后的

flash消息将在不可见的控制器中提供。 显示在视图中以获取控制器的动作并通过视图