2011-10-28 10 views
7

フォームを含むページがあり、ユーザーがそれを送信すると、データがコントローラに送られ、コントローラーが検証をチェックします。エラーがあれば、ユーザーを前のページ(フォームを含むページ)、それ以外の場合はデータをモデルに送信します。 (いずれかの検証エラーがある場合) redirect()による検証エラーデータの受け渡し方法

コントローラから前のページにリダイレクトするために、私は

 redirect($this->input->post('redirect')); 

上記のコードが正常に動作して、次のコードを持っているが、それがユーザをリダイレクトした後に問題があります前のページ(フォームを含むページ)は、検証エラーを表示していません。

上記の「リダイレクト」コードで検証エラー情報を渡し、そのページに検証エラーメッセージを表示する方法を教えてください。事前に

感謝:)

ソリューション:

私のコントローラで

<?php 

    if ($this->session->flashdata('errors')){ //change! 
    echo "<div class='error'>"; 
    echo $this->session->flashdata('errors'); 
    echo "</div>"; 
    } 

    ?> 

は、このように私はを通じて検証エラーデータを渡すことができます私のビューファイルで

$redirect=$this->input->post('redirect'); // << for this I have- <input name="redirect" type="hidden" value="<?= $this->uri->uri_string() ?>" />   in my view file 

    $this->session->set_flashdata('errors', validation_errors()); 
    redirect($this->input->post('redirect')); 

コントローラから前のページにリダイレクト

+1

まさに私がthis-を置くべき場所http://stackoverflow.com/questions/2000621/codeigniter-how-to-redirect-properly-with-form-validation –

答えて

12

CIのセッションライブラリからflashdataを試すことができます。これにより、次のサーバー要求でデータを利用できるようになります。

$this->session->set_flashdata('errors', validation_errors()); 

redirect($this->input->post('redirect')); 
+0

あなたが親切に教えてくださいだろう見てみましょう$ this-> session-> set_flashdata( 'エラー'、validation_errors());事前に感謝:) –

+0

ありがとうございます。私は解決策を見つけました:) –

+0

私はset_flashdata()の呼び出しをリダイレクトの呼び出しの直前に置いています。その後、リダイレクト先のページで利用できます。 – michaeljdennis

関連する問題