如何使用set_value但不使用form_validation set_rules?

时间:2016-09-16 09:33:19

标签: php codeigniter validation setvalue

我有这样的算法:

if ($this->form_validation->run() == FALSE) {
        $this->load->view('costs/v_addcontainer', $data);
    } elseif ($check_valid_qty == "error" || $this->form_validation->run() == FALSE) {
         $this->session->set_flashdata('qty_error', 'Quantity not valid!');
         redirect('Cost/add_container');
    } elseif ($check_data_selling > 0) {
         $this->session->set_flashdata('data_exist', 'Data already exists!');
         redirect('Cost/add_container');
    } else{
        // insert data
    }

如果数据已存在,系统将提醒“数据已存在”,但我希望在表单上设置先前的值。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

你应该再次加载你的视图"失败"案件而不是重定向。

"数据已经存在"消息正在显示,因为您将其设置为flashdata,它将在重定向中保留,但其他所有内容基本上都会丢失,因此如果您想使用set_value()重新填充表单,则需要在当前的要求。

这也意味着您不需要弄乱会话数据,并且可以正常传递您的警报消息。

if ($this->form_validation->run() == FALSE) {
    $this->load->view('costs/v_addcontainer', $data);
} elseif ($check_valid_qty == "error") {
     $data['qty_error'] = 'Quantity not valid!';
     $this->load->view('costs/v_addcontainer', $data);
} elseif ($check_data_selling > 0) {
     $data['data_exist'] = 'Data already exists!';
     $this->load->view('costs/v_addcontainer', $data);
} else{
    // insert data
}

理想情况下,您应该查找表单验证回调文档,因为它们允许您将额外的规则提供给表单验证类,而不需要额外的逻辑。