2011-07-06 7 views
2

私はCodeIgniterが新しく、同じコントローラの別の関数のビューに渡す$データを再利用しようとしています。

I次のコードを持っている:

class MyClass extends CI_Controller 
{ 
    function func1() 
    { 
     $this->mdata['first'] = "first"; 
     $this->mdata['second'] = "second"; 
     $this->load->view('my_view', $this->mdata); 
    } 

    function func2() 
    { 
     var_dump($this->mdata); 
    } 
} 

事実が明らかに、私は...関数func2()で私の変数を使用できないということです

誰かがそうするのトリックを持ってい?

ありがとうございました。

B

答えて

2

プライベートメソッド_create_mdata()を作成し、両方のメソッドで呼び出します。このようなことをせずに文字通りデータを共有する方法はありません。

// methods starting with an underscore are considered private by CodeIgniter. 
// you may want to actually declare it private though. That is better practice 
function _create_mdata() 
{ 
    $this->mdata['first'] = "first"; 
    $this->mdata['second'] = "second"; 
} 

function func1() 
{ 
    $this->_create_mdata(); 
    // continue with func1 
} 
+0

ありがとうございました! –

+0

application/config/constants.phpにもstuffを入れることができます –

0
class Your_Class { 
    public $mdata; 

    function func1() 
    { 
     $this->mdata['first'] = "first"; 
     $this->mdata['second'] = "second"; 
     $this->load->view('my_view', $this->mdata); 
    } 

    function func2() 
    { 
     var_dump($this->mdata); 
    } 
} 

今 "$this->mdata" は動作します。

希望します。

+0

それは:(しない「'のvar_dump(の$ this - > MDATA)を'」func2のは、それがfunc1の呼び出しからinitiallizedされることはありません別のURLリクエストで呼び出された場合。私が推測 –

+0

私はNULLを返します –

+0

func2はフォーム検証の後に呼び出されます –

0

func1は、ユーザーブラウザがyoursite.com/myclass/func1にのみ呼び出されます。 URLを使用してfunc2に行くと、func2だけが呼び出されます。したがって、mdata値は割り当てられません。これらの値を割り当てるコンストラクタを使用できます。もっと時間があればコード例を載せます。

+0

ありがとうございます、次のコントローラのために思い出してください:) –

0

擬似コードはテストされていません。 おそらく、セッションを自動読み込みする必要があります。

class Your_Class { 

     function func1() 
     { 
      $this->load->library('session'); 

      $mdata = array('mdata' => array( 'first' => 'first', 
               'second' => 'second' 
              ) 
         ) 
      $this->session->set_userdata($mdata); 

      $this->load->view('my_view', $mdata['mdata']); 
     } 

     function func2() 
     { 
      $this->load->library('session'); 
      $mdata = $this->session->userdata('mdata'); 
      var_dump($mdata); 
     } 
    } 
関連する問題