web-dev-qa-db-ja.com

Codeigniterで1つのコントローラーから別のコントローラーに変数を渡す方法

CodeIgniterの学習を始めたばかりです。

あるコントローラー(first_cont.php)から他のコントローラー(second_cont.php)に変数を渡す方法を知りたいですか?

どんな助けでもいただければ幸いです。

前もって感謝します :)

11
Aditi

状況によります。しばらくの間データを保持したい場合は、セッションデータが最適です。ただし、1回だけ使用する必要がある場合は、フラッシュデータの方が適切な場合があります。

最初のステップは、セッションライブラリを初期化することです。

$this->load->library('session');

次に、情報をフラッシュデータに保存します。

$this->session->set_flashdata('item', $myVar);

最後に、2番目のコントローラーで、データをフェッチします。

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

明らかに、これは、2番目のコントローラーからセッションライブラリを再度初期化するか、セッションライブラリをロードして両方のコントローラーにそのコントローラーから継承させる独自のベースコントローラーを作成する必要があることを意味します。

13
Matthew Daly

わかりました、これがMVCについての何かです。

コントローラは入力を受け取るためのものであり、モデルはロジックのためのものであり、ビューは表示するためのものです。

厳密に言えば、コントローラーから別のコントローラーにデータを送信するべきではありません。それが必要な場合は考えられません。


ただし、どうしても必要な場合は、redirectを使用して他のコントローラーにリダイレクトするだけで済みます。

何かのようなもの:

// some first_cont.php code here
redirect('/second_cont/valuereciever/value1')


// some second_cont.php code here
public function valureciever($value){
    echo $value; // will output value1
}
7
Prasanth

Codeigniterでは、2つの異なるコントローラー間で変数を渡すことはできないと思います。明らかなメカニズムの1つは、セッションデータを使用することです。

7
Kalpesh Patel

Codeigniterには、あるコントローラーから別のコントローラーに値を渡す方法がたくさんあります。

Codeigniter Sessionを使用して、あるコントローラーから別のコントローラーにデータを渡すことができます。

そのためには、最初にセッション用のライブラリを含める必要があります

$this->load->library('session');

次に、変数名を使用してフラッシュデータ値を設定できます。

// Set flash data 
$this->session->set_flashdata('variable_name', 'Value');

それらは、codeigniterセッションflashdataを使用して、必要な場所で値を取得できます。

// Get flash data
$this->session->flashdata('variable_name');

2番目のオプションcodeigniterを使用すると、コントローラー名、メソッド名、および値を使用してcontrollからURLをリダイレクトでき、別のコントローラーで値を取得できます。

// Passing the value 
redirect('/another_controller_name/method_name/variable');

次に、別のコントローラーで値を取得できます

public function method_name($variable)
{
echo $variable;
}

そのすべて....

4
Vivek Pandey

最初のコントローラーでセッションを使用している場合は、最初のコントローラーでそのセッションの設定を解除せず、代わりに、次のように他のコントローラーで必要な値を保存します。

$sess_array = array('value_name1' => 'value1', 'value_name2' => 'value2');
$this->session->set_userdata('session_name', $sess_array);

次に、このセッションを他のコントローラーにリロードします。

$session_data= $this->session->userdata('session_name');
$any_var_name = $session_data['value1'];
$any_var_name = $session_data['value2'];

これは、あるコントローラーから別のコントローラーに値を渡す方法です。

1
Mohammed Dawood