Codeigniter flashdata - 我正确使用它吗?

时间:2011-06-11 00:03:07

标签: php session codeigniter

我了解了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之间传递flashdata的示例。我很担心..我这样做了吗?

编辑:我似乎从之前的尝试中保留了FALSE和TRUE。我可能不需要那个。

3 个答案:

答案 0 :(得分:15)

会话数据随时可在您的应用程序中的任何位置使用。直接从视图文件中调用它是正确的,因此它在Controller中进行设置。

根本不需要将其作为$this->load->view()的数据传递 - 这是多余的。为什么在这种情况下首先将它分配给flashdata?

你这样做的方式是正确的。

编辑:我刚看到你在模特而不是控制器中设置它 - 这是值得商榷的。我建议从模型调用中返回一个值,然后在Controller中根据它设置消息。

答案 1 :(得分:3)

$myArr = array('value 1', 'value 1');

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

在视图中,

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

答案 2 :(得分:2)

我只是将它保存在一个数组中并将其传递给视图:)

 $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 ?>
  

数据从控制器传递到   通过数组或方式的视图   对象在第二个参数中   查看加载功能。

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