31

次のコードを見てください。

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

返しますbool(false)

ビューでフラッシュデータを設定した直後に呼び出す必要がある場合があるため、その後は呼び出し可能である必要ありません。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を使用したり、通常のセッションを使用したりしない方がよいでしょう。

于 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 でリダイレクト後にフラッシュ メッセージを表示する

コントローラーでこれを設定します

<?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 に答える