私はflashdataについて学び、データベースの相互作用に基づいてメッセージを表示するためにそれを使用することにしました。
たとえば、影響を受ける行がない場合は、Post id is invalid or does not exist!
を表示します。
私のモデルでは
function delete_post($post_id)
{
$this->db->where('user_id', $user_id);
$this->db->where('post_id', $post_id);
$this->db->delete('posts');
if ($this->db->affected_rows() == 0)
{
$this->session->set_flashdata('result', 'Post id is invalid or does not exist!');
redirect('/posts/management');
return FALSE;
}
else
{
redirect('/posts/management');
return TRUE;
}
}
そして私の見解では
if ($this->session->flashdata('result') != ''):
echo $this->session->flashdata('result');
endif;
これは正常に機能しているようですが、CIドキュメントにはMVC間でフラッシュデータを渡す方法の例がありません。私は心配しています..私はこれを正しくやっていますか?
編集:私は以前の試みからFALSEとTRUEを残したようです。私はおそらくそれを必要としないでしょう。
セッションデータは、アプリケーションのどこからでも、いつでも利用できます。ビューファイルから直接呼び出すのが適切であるため、コントローラーに設定します。
$this->load->view()
を使用してデータとして渡す必要はまったくありません-冗長です。その場合、そもそもなぜそれをフラッシュデータに割り当てるのですか?
あなたがそれをしている方法は正しいです。
[〜#〜] edit [〜#〜]:コントローラーではなくモデルに設定しているのを見ました-これは非常に議論の余地があります。モデル呼び出しから値を返し、代わりにコントローラーでそれに基づいてメッセージを設定することをお勧めします。
$myArr = array('value 1', 'value 1');
$this->session->set_flashdata('myArray', $myArr);
ビューでは、
print_r($this->session->flashdata('myArray'));
配列に保存してビューに渡すだけです:)
$data['wow_list'] = $this->Wow_model->getWow($uid);
$this->session->set_flashdata('message', 'Done. You have added new task.');
$data['flash_message'] = $this->session->flashdata('message');
$this->load->view('wow/index', $data);
見る
<?= $flash_message ?>
データは、ビューの読み込み関数の2番目のパラメーターで、配列またはオブジェクトを介してコントローラーからビューに渡されます。