使用flashdata确定ModelIgniter中的模型是否成功

时间:2015-07-14 16:21:30

标签: php html codeigniter web

我正在尝试确定在我的模型中执行的数据库更新是否成功,将其状态(成功或不成功)最终传递到我的视图,以便我可以适当地显示div。到目前为止,只要模型更新有效,它就会起作用,但是当它没有时它就不起作用了。我正在使用flashdata通过控制器传递数据。

我的模特:

public function editTicket($ticket)
{
    $q = $this->db->where('ticketId', $ticket['ticketId']);
    $q = $this->db->update('tickets', $ticket);
    $results = $this->db->affected_rows();

    return $results;
}

我的控制器:

public function editExistingTicket()
{
    $this->load->model('tickets');
    $date = date("Y-m-d H:i:s");
    $ticket = array(
        'ticketId'    => $this->input->post('ticketId'),
        'category'    => $this->input->post('category'),
        'headline'    => $this->input->post('headline'),
        'description' => $this->input->post('description'),
        'assigned'    => $this->input->post('assigned'),
        'status'      => $this->input->post('status'),
        'priority'    => $this->input->post('priority'),
        'lastUpdated' => $date
    );
    if ($this->tickets->editTicket($ticket)){
        $this->session->set_flashdata('edit', '1');
    } else {
        $this->session->set_flashdata('edit', '0');
    }
}

我的观点(相关部分):

var edited = '<?php echo $this->session->flashdata('edit'); ?>';

if (edited == '1') {
  $('#editMessage').slideDown('slow');
  setTimeout(function(){$('#editMessage').slideUp('slow')}, 3000);
  //sessionStorage.setItem('edit', '0');
} else if (edited == '2') {
  $('#editFailMessage').slideDown('slow');
  setTimeout(function(){$('#editFailMessage').slideUp('slow')}, 3000);
  //sessionStorage.setItem('edit', '0');
}

关于我做错了什么想法?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

好吧,在控制器中,如果故障单更新失败,您将闪存数据设置为 0

$this->session->set_flashdata('edit', '0');

但正如您在视图中看到的那样,您希望变量已访问 2

} else if (edited == '2') {

然后会出现错误框。

你应该修正你的价值观,我认为一切都会好的。