2017-05-02 1 views
2

私はcodeigniterにデータを記入して提出する必要があるフォームを作成していますが、フォームの送信後にエラーが発生した場合、しかし、この段階では、入力した値がそのままフォームに残る必要があります。コードシニターにフォームの送信が失敗した後に値を保持できない

flashdataエラーが表示されますが、値がフォームに保持されません。私はset_valueを使用しようとしましたが、代わりに空白のフォームを取得しました。いずれかが誤りを指摘してくださいすることができ

ビュー

<?php echo form_open_multipart('student/data/'.$student->id); ?> 
    <p><?php echo $this->session->flashdata('req_msg'); ?></p> 
    <?php 
    $data = array(
     'type' => 'text', 
     'name' => 'name', 
     'placeholder' => 'Full Name', 
     'class' => 'form-control', 
     'id' => 'form-first-name', 
     'value' => set_value('name') 
     ); 
    ?> 
    <?php echo form_input($data); ?> 

    <?php 
    $data = array(
     'type'=>'tel', 
     'pattern'=>'^\d{10}$', 
     'name' => 'contactno', 
     'placeholder' => 'Enter 10 digit Contact No', 
     'class' => ' form-control', 
     'required' => 'required', 
     'id' => 'form-first-name', 
     'value' => set_value('contactno') 
     ); 
    ?> 
    <?php echo form_input($data); ?> 

    <div class="form-group"> 
     <?php 
     $data = array(
      'type' => 'submit', 
      'class' => 'btn btn-primary', 
      'name' => 'submit', 
      'content' => 'Upload', 
      'id' => 'btn-submit' 
    ); 
     echo form_button($data); 
     ?> 
    </div>         

<?php echo form_close(); ?> 

コントローラ

$this->form_validation->set_rules('contactno', 'Contact Number', 'trim|is_unique[student.contactno]'); 
if ($this->form_validation->run() == FALSE) 
    { 
    $this->session->set_flashdata('req_msg', 'Contact number already exists'); 
    redirect('student/data/'.$studentid); 
    } 
+1

リダイレクトすると、すべてのデータがリセット/リセットされます。あなたはこの –

+0

の代わりにAJAXを使用する必要があります@Abdulla Nilamどのように私はajaxを使用することができます教えてください – sammy

+0

http://michaelsoriano.com/how-to-ajax-validate-forms/ –

答えて

2

あなたのビューファイルのコード@

詳細情報は絶対に正しいです。あなたのコントローラのメソッドにはいくつかの変更が必要です。

あり

いくつかの重要なポイントは、あなたのコード内でソリューションを実装する前に知っておく必要があります:あなたの検証ルールが正常に通過して、ユーザーの入力を取るの背後にある動機が行われ

  1. リダイレクトする場合にのみ
  2. あなたの検証ルールがありません代わりに、検証エラーを表示する
  3. プットform_error(FIELD_NAME)の各入力と一緒にそれをリダイレクトするビューをロードし、その後合格しない

以下は行動の例です:

public function add() 
{ 
    $this->form_validation->set_rules('contactno', 'Contact Number', 'trim|is_unique[student.contactno]'); 
    if ($this->form_validation->run() !== FALSE) { 
     // Your database or model function calling will be coded here and make sure it returns boolean value 
     if ($isTrue) { 
$this->session->set_flashdata('req_msg', 'Congrats! You have successfully submitted data'); 
redirect('student/data/'.$studentid); 
     }else{ 

      // Handle error logs here 
     } 
    } 
    $this->load->view('your_view', $this->view_data); 
} 

これは完全な解決策です。検証ルールが失敗した場合にフォームフィールドに設定されたすべての値を取得すると確信しています。

問題が発生した場合は教えてください。

1

あなたがFALSE form_validation後にリダイレクトするため、問題が発生します。あなたは以下のようにそこにビューをロードする必要があります。

if ($this->form_validation->run() == FALSE) { 
    //your code 
    $this->load->view('your_view', $this->view_data); 
} 

あなたのビューでは、あなたの入力にSET_VALUE()を使用する必要があります。 documentation

関連する問題