我有这样的算法:
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
}
如果数据已存在,系统将提醒“数据已存在”,但我希望在表单上设置先前的值。我该如何解决这个问题?
答案 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
}
理想情况下,您应该查找表单验证回调文档,因为它们允许您将额外的规则提供给表单验证类,而不需要额外的逻辑。