CodeIgniter -无法向redirect()添加id参数


CodeIgniter - Unable to add id parameter to redirect()

我有以下用于编辑供应商表单的控制器代码:

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失败?

问好

努诺·里斯

url路由规则

$route['suppliers/edit/(:any)'] = 'suppliers/edit/$1';

首先感谢您的输入。

问题是:

当打开页面进行编辑时,我从uri段/$id(/3)中获得id。当强制发布语句的else{}部分时,所以链接上没有$id,给出404错误。

我只是添加了一个隐藏字段的形式,存储/$id时编辑表单加载。当发布时,到达else{}从发布中获取$id,然后将其用于查询和重定向。

一切正常。

再次感谢您的回复。

问好

努诺·里斯