2016-04-09 25 views
0

コントローラにflashdataにいくつかの値を割り当てるための1つのコードブロックと、export_dataコントローラにあるflashdataにアクセスするための1つのコードブロックがあります。CodeIgniterのflashdataが常に機能するとは限りませんが、userdataは常に機能しますか?

Reportコントローラー:

if ($this->input->get_post('date_frm')) { 
       $conditions[] = 'appointment_date >= "'.trim($this->input->get_post('date_frm', TRUE)).'"'; 
      } 

      if ($this->input->get_post('date_to')) { 
       $conditions[] = 'appointment_date <= "'.trim($this->input->get_post('date_to', TRUE)).'"'; 
      } 

      $conditions = $this->search_model->searchterm_handler($conditions); 

      $this->session->set_flashdata('ext_data', $conditions); 

そしてExport_dataコントローラーで:

$myVar = $this->session->flashdata('ext_data'); 
    $this->session->keep_flashdata('ext_data'); 

それは常に動作しませんが、私はむしろflashdataよりuserdataを使用する場合には、正常に動作しています。どうして?

+0

**正確に* *「常に動作していない」と* *意味「細かい作業」** – Sparky

+0

@Sparky何?私は、その後flashdataが働いている私のマシン上でこのプログラムを実行すると意味「は常に動作しません」サーバーにデプロイされると動作が停止し、コードを同じプロジェクトで作業している別の開発者マシンにマージすると、作業も停止する –

+0

OPの中で説明してもそれが重要だとは思わないのですか? – Sparky

答えて

0

OP:私はそれがflashdata()で設定

データのみ一回要求のために保存されて正常に動作してuserdataではなくflashdataを使用した場合、その後、アウトクリア:

Documentation:CodeIgniterは、 "f lashdata "、または次の要求にのみ使用可能なセッションデータが保存され、自動的にクリアされます。

...とkeep_flashdata()のみ、最初の後つの追加要求のためのデータを保存します。

Documentation:あなたは追加のリクエストを通じてflashdata変数を保持する必要があることが判明した場合、 keep_flashdata()メソッドを使用するとそうすることができます。


セッションが破棄されるまでしかし、userdata()は常に利用可能です。

を参照してください:あなたはflashdataが何であるかを知っておくべきSession Library

0

まず:What is Session Data?


私はあなたが完全なマニュアルを読むべきだと思います。

呼び出されたときにセッション値がクリアされません。次のサーバー呼び出しでも使用でき、2回目の呼び出しでは使用できません。一例として、

は、あなたがyour_site_url/controller/test1呼び出す場合、それはあなたがyour_site_url/controller/test2を呼び出す場合、それはtest単語3回を印刷しますその後ext_data

ためtestを設定します今すぐコントローラ

function test1() 
{ 
    $this->session->set_flashdata('ext_data', 'test'); 
} 
function test2() 
{ 
    echo $this->session->userdata('ext_data'); 
    echo $this->session->userdata('ext_data'); 
    echo $this->session->userdata('ext_data'); 
} 

で2つの機能を持っていると仮定しますこの時間にこのセッション変数を使用できることを意味しますが、次回の呼び出しでは(your_site_url/controller/test2を押すと)空白になります。

あなたはそれが何を意味するのかご理解いただきたいと思います。

CodeIgniterは、次の要求に利用可能な のみである「フラッシュデータ」またはセッションデータをサポートし、自動的にクリアされます。

+0

私はtest2()でflashdataが見つかりませんでしたが、あなたはuserdataを書きました、それは混乱していると思います –

関連する問題