1

私はこのルート設定を持っています、

$route['admin/company'] = "会社";

これはうまく機能します。このページには、データベースに会社を追加および削除するための 2 つのフォームがあります。このコードがコントローラーで実行され、ブラウザーに出力されると、URL はコントローラーへの直接ルートに変更されます。それで;

最初の読み込みページ = /admin/company

送信フォーム = /company/

これを回避する特別な方法はありますか?

これは、リダイレクトではなくロードビューでのみ発生することを指摘しておく必要があります。

コントローラーから次のようにビューを出力しています。

//check which form is being submitted.
if ($this->input->post('form2')){
    //This method will have the credentials validation
    $this->load->library('form_validation');

    $this->form_validation->set_rules('name', 'Name', 'trim|required|xss_clean');

    if($this->form_validation->run() == FALSE){
        //Field validation failed.
        //Create a variable with errors assigned to form 2
        $data['form2_errors'] = validation_errors();
        $this->load->view('admin/header', $data);   
        $this->load->view('admin/admin_navigation', $data); 
        $this->load->view('admin/company_view', $data);
        $this->load->view('admin/footer');  
    } else {
        //query the database
        log_message('debug', 'company add() called from controller');
        $this->result = $this->company_model->add($name);

        //basically if there is somthing in the result varible IE the query to add worked then .... 
        if($result) {
            redirect('admin/company_view', 'refresh');
        } else {
            //tell user problem with query
            $data['form2_errors'] = "Error: 0001";
            $this->load->view('admin/header', $data);   
            $this->load->view('admin/admin_navigation', $data); 
            $this->load->view('admin/company_view', $data);
            $this->load->view('admin/footer');  
            return false;
        }
    }
}

昨日codigniterを使い始めたので、間違っていることを修正してください。

4

1 に答える 1

0

上記のコメントで Cryptic & Cryode が言ったように、それは私のフォーム送信 URL でした。

それ以外の:

    <?php echo form_open('company'); ?>

私は使用する必要があります:

    <?php echo form_open('/admin/company'); ?>

どうもありがとう!

于 2013-05-08T07:27:06.080 に答える