4

私は codeigniter の初心者で、ユーザーを作成および管理するプロジェクトを作成しています。ここでは、「ユーザーが作成しました」などの一時的なメッセージを表示するために flashdata を使用しています。

フラッシュデータを設定する私のコードは

       $this->session->set_flashdata('message', 'User Created.'); 

私の見解では、私はそれを

$this->session->flashdata('message'); 

私の問題は、ユーザーが作成されるとフラッシュデータが表示され、ホームリンクをクリックするとフラッシュデータがまだ利用可能ですが、再度更新/ホームをクリックすると消えることです。ホームリンク自体を初めてクリックしたときにクリアしたい。それをコーディングする方法はありますか??。

4

7 に答える 7

3

コントローラーまたは別のビュー ファイルでset_flash をクリアする場合は、この単純なコードを使用できます。

$this->session->set_flashdata('error', 'User not found...'); //create set_flash

set_flash を設定解除

//echo "<pre>"; print_r($_SESSION); die; //for check 

if(isset($_SESSION['error'])){
    unset($_SESSION['error']);
}
于 2016-08-22T05:40:47.197 に答える
1

flashdata は 1 回表示されるはずです。

そして、ページを更新すると消えます。

したがって、ページを別のページにリダイレクトすると、機能するはずです。

ページを更新しない場合は、jQuery を使用して更新できます。

フラッシュを表示する div を言います。

<div id="flash-messages">Success Message</div>

jQuery を書く:

<script type="text/javascript">
$(function(){
  $("#flash-messages").click(function(){$(this).hide()});
});
</script>
于 2013-09-04T10:38:30.683 に答える
1

Ajax フレームワークを使用して、フラッシュ メッセージを自動的に非表示にすることができます。また、すべてのフラッシュ操作が含まれています。

詳細については、こちらから入手できます。 https://github.com/EllisLab/CodeIgniter/wiki/Ajax-Framework-For-CodeIgniter

于 2014-04-16T08:39:50.483 に答える
0

他に何も解決しない場合は、Session ライブラリを拡張して clear_flashdata 関数を追加してください。

<?php defined('BASEPATH') or exit('No direct script access allowed');

// application/libraries/Session/MY_Session.php
class MY_Session extends CI_Session
{

    public function __construct(array $params = array())
    {
        parent::__construct($params);
    }


    /**
     * Clear flashdata
     *
     * Legacy CI_Session compatibility method
     *
     * @param   mixed   $data   Session data key or an associative array
     * @return  void
     */
    public function clear_flashdata($data)
    {
        $this->set_userdata($data, null);
    }
}
于 2021-11-15T09:46:30.200 に答える