【问题标题】:Using flashdata to determine if model was successful in CodeIgniter在 CodeIgniter 中使用 flashdata 确定模型是否成功
【发布时间】:2015-07-14 16:21:30
【问题描述】:

我正在尝试确定在我的模型中执行的数据库更新是否成功,最终将它的状态(成功或不成功)传递给我的视图,以便我可以适当地显示一个 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');
}

关于我做错了什么有什么想法吗?

感谢您的帮助!

【问题讨论】:

    标签: php html codeigniter web


    【解决方案1】:

    好吧,如果票证更新不成功,则在控制器中将 flashdata 设置为 0

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

    但正如您在视图中看到的,您期望变量 visited2

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

    然后会出现错误框。

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

    【讨论】:

    • 这实际上只是一个复制和粘贴错误。视图设置为已编辑 == 0。当我检查元素时,更新失败时显示已编辑 == ''。
    • 嗯,这很奇怪。您确定在设置 flashdata 后没有发出任何请求吗?除了重定向到视图? Codeigniter flashdata 仅可用于下一个请求,然后清除。
    • 如果编辑成功,它会完全按照它的方式运行,并且有效,所以我很困惑。
    • 您可以尝试直接加载视图,无需重定向以查看该 flashdata 发生了什么,或者您也可以将结果传递到 $data。但我真的不明白为什么它不起作用......
    猜你喜欢
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 2017-01-26
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多