2016-06-27 13 views
-2

コードイグナイターに本当に問題があります。私は何も有用でないエラーを有効にしようとしており、私が知っている限り、私は正しくドキュメントに従っています。私が抱えている問題は、テンプレートのvalidation_errors()関数が検証の問題をエコーし​​ないということです。検証プロセスは動作しています(検証が失敗した場合はフォームに戻ります)。ただし、エラーメッセージは表示されません。 しかし、私はコントローラのメソッドを以下に示し、フォームも表示しました。フォームの検証が機能しない

$ this-> load-> model( 'admin_members'、 'members'、TRUE); (の$ this - >入力 - >ポスト( 'addmember'))であれば{

  $this->load->helper('form'); 
     $this->load->library('form_validation'); 
     // Displaying Errors In Div 
     $this->form_validation->set_error_delimiters('<div class="error">', '</div>'); 

     // Validation For Name Field 
     $this->form_validation->set_rules('mname', 'Member Name', 'required|min_length[15]|max_length[25]'); 
     $this->load->library('upload', $config); 
     // Validation For Email Field 
     $this->form_validation->set_rules('email', 'Email', 'required|valid_email'); 

     if($this->validation->run()== FALSE){ 
      $this->load->view('admin/member-management/add', $data); 

     } 

     else{ 
       $member_id = $this->members->add(); 

     if(!is_dir('images/members/' . $member_id)) mkdir('images/members/' . $member_id , 0777, TRUE); 

     $config['upload_path'] = 'images/members/' . $member_id ."/"; 
     $config['allowed_types'] = 'gif|jpg|png'; 
     $config['max_size'] = '22222'; 
     $config['max_width'] = '10242'; 
     $config['max_height'] = '10242'; 
     $config['file_name'] = "profile.jpg" ; 
     $this->upload->initialize($config); 
     $this->upload->do_upload('profile_image'); 

     $config = array(); 
     $config['upload_path'] = 'images/members/' . $member_id ."/"; 
     $config['allowed_types'] = 'gif|jpg|png'; 
     $config['max_size'] = '22222'; 
     $config['max_width'] = '10242'; 
     $config['max_height'] = '10242'; 
     $config['file_name'] = "pan_card.jpg" ;  
     $this->upload->initialize($config); 
     $this->upload->do_upload('pan_card'); 

     $config = array(); 
     $config['upload_path'] = 'images/members/' . $member_id ."/"; 
     $config['allowed_types'] = 'gif|jpg|png'; 
     $config['max_size'] = '22222'; 
     $config['max_width'] = '10242'; 
     $config['max_height'] = '10242'; 
     $config['file_name'] = "id_proof.jpg" ;  
     $this->upload->initialize($config); 
     $this->upload->do_upload('id_proof'); 

     $config = array(); 
     $config['upload_path'] = 'images/members/' . $member_id ."/"; 
     $config['allowed_types'] = 'gif|jpg|png'; 
     $config['max_size'] = '22222'; 
     $config['max_width'] = '10242'; 
     $config['max_height'] = '10242'; 
     $config['file_name'] = "add_proof.jpg" ; 
     $this->upload->initialize($config); 
     $this->upload->do_upload('add_proof'); 

     redirect('admin_member', 'refresh'); 

    } 

} 

ビュー/ admin_member/add.php

答えて

0

$this->form_validation->run() === FALSE 

$this->validation->run() == FALSE 

を交換

コントローラ機能でフォーム検証ルールを確認する構文を修正してください。

0

フォームに戻る必要があるビューに、妥当性検査エラー<?php echo validation_errors()?>を必ずエコーしてください。

あなたのコードでも、私が気づいた変数$dataを渡しましたが、コード内のどこにも宣言されていませんでした。私は$dataのいずれかが、ビューのいくつかの変数を保持する配列であると仮定します。または、$dataと仮定して、サーバーに渡した値があります。この場合、<?php echo set_values(//Value of the name parameter you give to the input)を使用できます。これは、フォームに戻っても、もう一度入力したくない場合に便利です。

追加ボーナスとして$this->form_validation->run() == FALSEの代わりに$this-form_validation->run() === FALSEを使用してください。これにより問題は解決されませんが、攻撃者が要素の戻り値の型を文字列に変更すると、文字列 "TRUE"はTRUEに評価されません。

私はあなたの質問に答えているかどうかを知っています... :)

関連する問題