31

请看下面的代码:

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

它返回bool(false)

我希望在那之后它不需要被召回,因为有时我需要在视图中设置 flashdata 后立即调用它redirect()


在venkat的评论后编辑

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

不幸的是没有区别。

4

6 回答 6

31

好吧,文档确实说明了

CodeIgniter 支持“flashdata”,即仅可用于下一个服务器请求的会话数据,然后会自动清除。

作为第一件事,这显然意味着您需要进行新的服务器请求。重定向、刷新、链接或其他方式将用户发送到下一个请求。

如果您在同一个请求中使用 flashdata,为什么还要使用它呢?您最好不要使用 flashdata 或使用常规会话。

于 2012-10-28T14:35:20.287 回答
20
// 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');
于 2013-08-19T14:18:02.883 回答
12

要设置 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');
于 2014-07-31T05:14:50.727 回答
8

在 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
}

?>

请检查以下链接以在 Codeigniter 中重定向后显示闪烁消息

于 2016-07-19T11:12:01.220 回答
3

更改您的 config.php:

$config['sess_use_database'] = TRUE;

到:

$config['sess_use_database'] = FALSE;

这个对我有用。

于 2014-07-31T04:38:57.373 回答
-1

重定向后的闪烁消息将在控制器中不可见。在视图中显示获取控制器的操作并将其传递给视图

于 2018-07-13T06:04:57.197 回答