2012-03-18 8 views
0

私はAuthorというコントローラーを持っています。コントローラの内部では、3段階のフォーム処理を行う送信機能を定義しました。今、私は最初のフォームしか作成していません。コードイグナイターの複数のフォームビュー

class Author extends CI_Controller { 

    public function index() { 
    } 

    public function submit() { 
     $this->load->view('author/submit_step1'); 
    } 

} 

私の目的は、データベースへの最初の形式の値を保存し、第2フォームをロードするURLにビューポイントにロードされるのForm1(アクション)

http://localhost/zabjournal/Author/submit/2 

フォームのアクションが与えられたら、モデルにアクセスして最初のフォームの詳細を保存し、2番目のフォームのビューをロードできるようにコントローラを設計する方法を教えてください。

+0

各ステップフォームの値を格納するセッションで、フォームモデルを登録する必要があります。そのモデルをDBに保存したいので、そうしてください。 – hakre

答えて

4

あなたはこのような何かを行うことができます:

public function submit(){ 

if ($this->input->post('submit-1')) //Use unique names for each submit button value on the forms 
{ 
    //validate and save form data to database 

    $this->load->view('author/submit_step2'); 
} 
elseif ($this->input->post('submit-2')) 
{ 
    //validate and save form data to database 

    $this->load->view ('author/submit_step3'); 
} 
elseif ($this->input->post('submit-3')) 
{ 
    //validate and save form data to database 

    $this->load->view('author/success'); 
} 
else 
{ 
    $this->load->view('author/submit_step1'); 
} 

} 
+0

質問で提供されたURLとの互換性を高めるために、submit()はpost変数ではなくifステートメントで使用する変数、例えば$ stepが必要です。 – cchana

0

は、あなたはまた、第二の形式をロードし、コントローラにリダイレクト機能を使用することができます。など
例えば

//the function that loads the first form<br><br> 
public function load_firstForm() { 
     $this->load->view('author/form1'); 
    } 

//in your form1 use form_open('author/submit_step1') to access the second function 

public function submit_step1() { 
     //load your model here and a method to save these items 

     //redirect to the same controller but the second method that loads the second form 
     redirect('author/submit_step2'); 
    } 

//function that loads form2 

public function submit_step2() { 
     $this->load->view('author/form2');//loads the second form 
    } 

この情報がお役に立てば幸いです。

関連する問題