2011-08-08 17 views
3

私は自分のビューの1つに関数を持っており、CodeIgniterのデータ配列からビューで使用できる変数の1つにアクセスしたい。ビュー内の関数内のCodeigniterデータ変数

たとえば、今

$this->load->view('someview', array(
    'info' => 'some info' 
)); 

、私のビュー内で、私は機能を持っている、と私はその関数のスコープ内の変数$infoにアクセスできるようにしたい:私のコントローラで、私はこれを持っています。

これは可能ですか?

+0

理由はありません。なぜなら、それはヘルパーを使うようなものでなければなりません。 – simnom

+0

@simnom:スコープルックアップチェーンを持つJavascriptとは異なります(変数がローカルスコープに見つからない場合、スコープチェーン内で変数が上位にあると見なします)、PHPはローカル変数またはグローバル変数のみを使用できます。したがって、ビューに公開される変数は、関数内では使用できません。 –

+1

それでは、関数に変数を渡さないようにしてください。 $ infoへのアクセス権はfunction_name($ info)に渡すだけです。 – simnom

答えて

2

私はそれはそれで利用可能ですので、あなたは、あなたの関数に代わり、パラメータとしてこれを渡す必要があり

function func_in_view(){ 
    global $info; 
    print_r ($info); // NULL 
} 

。これを試みたが、私の見解someview.phpglobalsを使用することはできません。

​​

私はこの方法にhttp://codeigniter.com/user_guide/libraries/loader.html$this->load->vars($array)

を読んで、それが目的だが、単にそのコントローラのすべての機能から任意のビューファイルが利用できるようにすることです。私はglobal $info;の上に私のコードを試みたが、それはまだ動作しません。

代わりにパラメータとして渡すことで回避策を実行する必要があります。
someview.php =>print "<pre>";print_r($GLOBALS);print "</pre>";にこれを含めると、$this->load->viewに渡される変数は含まれません。

$GLOBALS['var_available_in_function'] = $value; 

あなたの機能:お使いのコントローラで

+0

あなたは正しいです。私はその投稿を誤読し、私の答えを取り除いた。あなたの答えは正しいと思います。 – Sukumar

4

function get_var() { 
     global $var_available_in_function; 

     return $var_available_in_function; 
    } 
0

私は、グローバル変数に$データ値で渡さを割り当て、ビュー内のグローバル変数を作成することによって、これを解決しました。これにより、関数に変数を渡すことなく、ビューの関数内で情報を読み取ることができます。

例えば、コントローラでは、あなたが持っている:

$data['variable1'] = "hello world"; 
$this->load->view('showpage',$data); 

はその後showpage.phpビューで、あなたが持っている:

global $local_variable = $variable1; 

function view_function() { 
    global $local_variable; 
    echo $local_variable; 
} 

view_function(); 

は、この情報がお役に立てば幸い!

+0

問題は、たとえば、ユーザーの詳細などの配列から生成され、各単一の値をビュー – MJoraid

+0

"global $ local_variable = $ variable1;"によってアクセスされる独自の変数にしたい場合は、問題です。ここに構文エラーがスローされます。 – Innovaat

関連する問題