2016-05-30 11 views
0

私はcodeigniterフレームワークを使用してPHPシステムを作成しています。私はテンプレートなしで基本フレームワークを使用しています。ファイルを表示するエラーメッセージでリダイレクトした後、htmlページからコントローラにdbに保存するデータを送信すると、コントローラファイルにデータを保存するために使用したURLを削除できません。どのように私はこの問題を解決する?codeigniterのURLリダイレクト

これは私がコントローラにデータを送信するために使用したフォームです。

<form role="form" action="save_user_type" method="POST" > 
<div class="row"> 

      <div class="form-group col-md-6"> 
       <label>User Type</label> 
       <input type="text" class="form-control" name="type" id="type" placeholder="Enter ..."> 
      </div> 
      </div> 

      <div class="row"> 
       <div class="form-group col-md-6"></div> 
       <div class="form-group col-md-6"> 
        <button type="submit" class="btn default">Save</button> <button type="button" class="btn default">Reset</button> 
       </div> 
      </div> 
      </form> 

これは私が呼び出すコントローラ機能です。

function save_user_type(){ 
    try { 
     $this->load->model('Configuration/Configuration_model'); 
     if($this->Configuration_model->save_types() == 1){ 
      $success['done'] = "Good Job"; 
     }else{ 
      $success['dont'] = "Error"; 
     } 
     $this->load->view('template/header'); 
     $this->load->view('template/menubar'); 
     $this->load->view('configuration/user/index',$success); 

    } catch(Exception $exc){ 
      return $exc->getTraceAsString(); 
     } 
} 

この問題を解決してください。

+0

、それを使用するためのメッセージを成功させるために使用$this->session->flashdata('success');$this->session->flashdata('error');を表示します。リダイレクト( 'redirect/computer_graphics'); –

答えて

0

ブラウザでURLを変更するには、新しいコントローラ/機能にリダイレクトする必要があります。コントローラーcontrolを呼び出し、成功と失敗を処理するための2つの関数を追加します。

public function save_user_type(){ 
    try { 
     $this->load->model('Configuration/Configuration_model'); 
     if($this->Configuration_model->save_types() == 1){ 
      redirect('control/save_success'); 
     }else{ 
      redirect('control/save_fail'); 
     } 
    } catch(Exception $exc){ 
     return $exc->getTraceAsString(); 
     } 
} 

public function save_sucess(){ 
    $this->load->view('template/header'); 
    $this->load->view('template/menubar'); 
    $this->load->view('configuration/user/index'); 
} 

public function save_fail(){ 
    $this->load->view('template/header'); 
    $this->load->view('template/menubar'); 
    //the "fail" view will have the error message 
    //and maybe a link back to the page with the form. 
    $this->load->view('configuration/user/fail'); 
} 

失敗した試みを提示するための別のオプションは、バックフォームをロードし、代わりsave_failページのページにリダイレクトコントローラ/関数にエラーメッセージを渡すためにセッションを使用することです。

0

データを送信した後、インデックスページにリダイレクトする必要があると思います。 これは、表示ページを読み込む代わりに使用してください。

redirect('controller_name/function_name'); 
0

メッセージを表示して別のページにリダイレクトするためにflashdataを使用します。ビューで

function save_user_type(){ 
    try { 
     $this->load->library('session'); 
     $this->load->model('Configuration/Configuration_model'); 
     if($this->Configuration_model->save_types() == 1){ 
      $this->session->set_flashdata('success',"Good Job"); 
      redirect('controller_name/function_name'); 
     }else{ 
      $this->session->set_flashdata('error',"Error Occured"); 
      redirect('controller_name/function_name'); 
     } 
     $this->load->view('template/header'); 
     $this->load->view('template/menubar'); 
     $this->load->view('configuration/user/index',$success); 

    } catch(Exception $exc){ 
      return $exc->getTraceAsString(); 
     } 
} 

エラー

+0

ありがとうございます。アドレスバーは正しいパスには達しません。同じファイルに関数をリダイレクトしたいしかし、URLが間違って表示されます。 – jabey

+0

あなたが試したことと間違っているものは靴を履いてください – Vinie

+0

私はフォームを送信して、表示ファイルに成功メッセージを送信したいと思います。私はそれを作成しますが、アドレスバーのURLは変わりません。それは私がdbにデータを保存するために使用した残りの機能です。私は最初のコントローラ機能にそのページを指示したい – jabey

関連する問題