我了解了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之间传递flash数据的示例。我很担心。。我这样做对吗?
编辑:我似乎在之前的尝试中留下了FALSE和TRUE。我可能不需要。
会话数据在应用程序中的任何位置、任何时间都可用。直接从视图文件调用它是正确的,因此它在控制器中设置它。
根本不需要将其作为数据与$this->load->view()
一起传递——这是多余的。在这种情况下,为什么首先将其分配给flash数据?
你做这件事的方式是正确的。
编辑:我刚刚看到你在模型而不是控制器中设置它,这是非常有争议的。我建议您从Model调用中返回一个值,并在Controller中基于该值设置消息。
$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 ?>
数据从控制器传递到通过数组或的第二个参数中的对象视图加载功能。
http://codeigniter.com/user_guide/general/views.html