我有以下控制器代码用于编辑供应商表格:
public function edit($supplier_id = NULL) {
if ($this->session->userdata ( 'username' ) === NULL) {
redirect ( 'login' );
} else {
// set validation rules
$this->form_validation->set_rules ( 'suppliers', 'Department', 'callback_combo_check' );
$this->form_validation->set_rules ( 'nome', 'Employee No', 'trim|required' );
$this->form_validation->set_rules ( 'morada', 'Employee Name', 'trim|required' );
$this->form_validation->set_rules ( 'cp', 'Employee Name', 'trim|required' );
$this->form_validation->set_rules ( 'localidade', 'Designation', 'trim|required' );
if ($this->form_validation->run () == FALSE) {
$data['supplier_data'] = $this -> Suppliers_model -> get_supplier($supplier_id);
if (empty($data['supplier_data'])) {
show_404();
}
$this->lang->load ( 'suppliers' );
$data['suppliers'] = $this->Suppliers_model->get_suppliers();
$data ['title'] = 'Dashboard';
$this->load->view ( 'templates/head', $data );
$this->load->view ( 'templates/menu' );
$this->load->view ( 'suppliers/edit', $data );
$this->load->view ( 'templates/scripts' );
$this->load->view ( 'templates/footer' );
} else {
// pass validation
$up_data = array (
'Tipo_Fornecedor' => $this->input->post ( 'suppliers' ),
'Nome_Fornecedor' => $this->input->post ( 'nome' ),
'Morada_Fornecedor' => $this->input->post ( 'morada' ),
'Codigo_Postal' => $this->input->post ( 'cp' ),
'Localidade' => $this->input->post ( 'localidade' )
);
// insert the form data into database
$this->db->where('Codigo_Fornecedor', $supplier_id);
$this->db->update( 'tabela_fornecedores', $up_data );
// display success message
$this->session->set_flashdata ( 'msg', '<div class="alert alert-success text-center">Supplier details updated to Database!!!</div>' );
redirect ('suppliers/edit/'.$supplier_id);
}
}
}
结果应该是在更新数据库之后,使用OK消息返回编辑表单,就像控制器内部一样。 问题是,当我将结尾重定向到url时,在这种情况下它会重定向到自身,重定向会丢失$ suppliers_id参数,因此控制器会遇到404错误,因为它无法找到供应商的ID。
实施例: www.site.com/suppliers/edit/1
1是供应商ID,它正确加载页面,我更改我需要的任何内容,提交表单,值更新,但当它点击重定向部分
redirect ('suppliers/edit/'.$supplier_id);
它访问www.site.com/suppliers/edit/,因为没有id它会在页面开头点击404_show函数。
我做错了什么,为什么使用$ suppliers_id的重定向会失败?
祝你好运
Nuno Reis
网址的路由规则
$route['suppliers/edit/(:any)'] = 'suppliers/edit/$1';
答案 0 :(得分:0)
您输入的第一个。
问题是:
当打开要编辑的页面时,我从uri段/ $ id(/ 3)获得了id。 在强制执行以后的{}部分声明时,链接上没有$ id,给出了404错误。
我刚刚在加载edir表单时存储/ $ id的表单中添加了一个隐藏字段。 发布后,到达else {}从帖子中获取$ id,然后将其用于查询和重定向。
现在一切正常。
再一次回复。
祝你好运
Nuno Reis