web-dev-qa-db-ja.com

Codeigniter flashdata-正しく使用していますか?

私は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を残したようです。私はおそらくそれを必要としないでしょう。

14
CyberJunkie

セッションデータは、アプリケーションのどこからでも、いつでも利用できます。ビューファイルから直接呼び出すのが適切であるため、コントローラーに設定します。

$this->load->view()を使用してデータとして渡す必要はまったくありません-冗長です。その場合、そもそもなぜそれをフラッシュデータに割り当てるのですか?

あなたがそれをしている方法は正しいです。

[〜#〜] edit [〜#〜]:コントローラーではなくモデルに設定しているのを見ました-これは非常に議論の余地があります。モデル呼び出しから値を返し、代わりにコントローラーでそれに基づいてメッセージを設定することをお勧めします。

15
Wesley Murch
$myArr = array('value 1', 'value 1');

$this->session->set_flashdata('myArray', $myArr);

ビューでは、

print_r($this->session->flashdata('myArray'));
3
Sumith Harshan

配列に保存してビューに渡すだけです:)

 $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番目のパラメーターで、配列またはオブジェクトを介してコントローラーからビューに渡されます。

http://codeigniter.com/user_guide/general/views.html

2
Vamsi Krishna B