2012-04-25 15 views
0

5つのコントローラを持つcodeigniterアプリケーションが1つあり、残りはフォームを継承しています。ベースでグローバル変数を使用してビューに読み込みますが、動作しません。未定義の変数)ビューをロードするときこれをどのように修正できますか?あなたが設定クラスを使用することができますhttp://php.net/manual/en/function.define.phpcodeigniter、グローバル変数を使用

+2

は、あなたの質問に答えていないが、あなたではなく、コンテンツを返すために、 'ビュー()'関数の3番目のパラメータとして 'true'に設定することができます好きな場所あなたはこの変数を使用することができますそれをエコーするよりも(ob_ *関数を使う必要はありません) – Ben

+1

Mamoum、正確なメッセージは何ですか? $ this-> tplDataの未定義のエラーを受け取ったのは不思議です。渡されなかった配列インデックスを呼び出すビューからエラーが発生していないことを確かめてください。 –

+0

エラーは配列インデックスと呼ばれるビューです。未定義の変数... –

答えて

0

試すをロードするためのベースでこの機能を使用しています。

$this->config->set_item('global_variable', $my_var); 

今あなたが

$this->config->item('global_variable'); 
+0

論理的に言えば、defineは定数のためであり、OPの論理は定数ではありません。 gloablly、globals、constatsのどちらも目的が違うが、それらは入れ替えることはできない。 –

+0

「tplData」の種類は何ですか? –

+1

正直なところ、わかりませんが、それはビューに関連しているので、すべてのメソッドから変更され、ビューがロードされ、別のビューがロードされ、その他のデータセットがロードされると想像します。あなたがそれをconstatとして定義する場合は、ビューの異なるデータを渡すたびに再定義する必要があります。 –

1

-

私はあなたの変数を設定する代わりに、グローバルのdefine()を使用してビュー


function _setContent($tplFile) { 
      ob_start(); 
      $this->load->view($this->theme_dir . '/' . $tplFile, $this->tplData); 
      $_content = ob_get_contents(); 
      ob_end_clean(); 

      $this->tplData['_content'] = $_content; 
      $this->load->view($this->theme_dir . '/default', $this->tplData); 
     } 

$this->tplData // is the global variable 
関連する問題