CodeIgniterの学習を始めたばかりです。
あるコントローラー(first_cont.php)から他のコントローラー(second_cont.php)に変数を渡す方法を知りたいですか?
どんな助けでもいただければ幸いです。
前もって感謝します :)
状況によります。しばらくの間データを保持したい場合は、セッションデータが最適です。ただし、1回だけ使用する必要がある場合は、フラッシュデータの方が適切な場合があります。
最初のステップは、セッションライブラリを初期化することです。
$this->load->library('session');
次に、情報をフラッシュデータに保存します。
$this->session->set_flashdata('item', $myVar);
最後に、2番目のコントローラーで、データをフェッチします。
$myVar = $this->session->flashdata('item');
明らかに、これは、2番目のコントローラーからセッションライブラリを再度初期化するか、セッションライブラリをロードして両方のコントローラーにそのコントローラーから継承させる独自のベースコントローラーを作成する必要があることを意味します。
わかりました、これが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
}
Codeigniterでは、2つの異なるコントローラー間で変数を渡すことはできないと思います。明らかなメカニズムの1つは、セッションデータを使用することです。
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;
}
そのすべて....
最初のコントローラーでセッションを使用している場合は、最初のコントローラーでそのセッションの設定を解除せず、代わりに、次のように他のコントローラーで必要な値を保存します。
$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'];
これは、あるコントローラーから別のコントローラーに値を渡す方法です。