2017-01-24 9 views
1

私は新しい問題に直面していますが、私は多くのコードを単純化するコードイグナイタを使用してフォームを検証しています。最初のフォームは、ビュー内でポップアップとして読み込まれます。しかし、コントローラが検証後に応答を返すと、フォームは前のビューの中にロードするのではなく、別のWebページとして開きます。CodeIgniterフォームのバリデーションの問題

main_view.php

<script> 
function div_show(type, classID) {  
    if(type=='adduser') 
    { 
    document.getElementById('AddUser_popup').style.display = "block"; 
    $("#AddUser_popup").load("add_user"); 
    } 
} 
</script> 
<body> 
    <button id="popupNewTerm" onClick="div_show('adduser', null)">Add user</button> 
    <div class="AddUser_popup" id="AddUser_popup"> </div> 
</body> 

コントローラー:

public function add_user() 
{ 
    $data = array(); 
    $this->load->helper('form'); 
    $this->load->helper('url'); 
    $this->load->library('form_validation'); 
    $this->load->model('user_m'); 
    $this->form_validation->set_rules('username','Username', 'required|trim'); 
    $this->form_validation->set_rules('emp_email','E-mail', 'required|trim|valid-email|xss_clean'); 

    if($this->form_validation->run()==FALSE) 
    { 
     $this->load->view('includes/forms/add_user', $data); 
    } 
    else { 
     $data['username']=$this->input->post('username'); 
     $data['emp_email']=$this->input->post('emp_email'); 


     $user=array(
      'user_id'=> NULL, 
      'username'=> $data['username'], 
      'emp_email'=>$data['emp_email'] 
     ); 
     $this->user_m->insert_user($user); 
     $this->load->view('includes/forms/add_user', $data); 
    } 
} 

フォーム - >(add_user.php)Iの後main_view.php内部フォームをロードする方法

<div id="popupContact"> 
<?php 

if(isset($username) && isset($emp_email)) 
{ 
    echo validation_errors(); 
    echo 'User added successfully!'; 
} 
else { 
    echo validation_errors(); 
    echo form_open('', 'id="form" name="form"'); 
    echo '<p id="close" onclick ="div_hide()">X</p>'; 
    echo '<h2>Add User</h2>'; 
    echo '<hr>'; 
    echo '<label for="username">Username: </label>'.form_input('username', set_value('username')) .'&nbsp;&nbsp;'; 
    echo '<label for="emp_email">Email: </label>'.form_input('emp_email', set_value('emp_email')) . '<br><br>'; 


    echo form_submit('submit', 'Submit', 'id="submit"'); 

    echo form_close(); 
} 
?> 
</div> 

コントローラからの検証が失敗し、検証が成功したら、メインページ内でフォームを閉じる必要があります。私は、通常のjavascriptとPHPを使用してフォームの検証を行うことができますが、検証のコードイグナイターメソッドを学びたいと思った。ありがとう。

答えて

1

あなたはCodeIgniterのについての検証で問題が発生した場合、その後、CodeIgniter Official Form Validation Guide

を読んでください、私はあなたがまだ読み取りを混同している場合は/作品を審査

設定ファイルに検証ルールの保存セットをお勧めしますコードの下に、それはあなたを助けるでしょう。このコードは構成ファイルで使用されます。

<?php 

$config = array(
    'master/user' => array(
     array(
      'field' => 'empname', 
      'label' => 'Employee Name', 
      'rules' => 'required|trim|min_length[6]|xss_clean' 
     ), 
     array(
      'field' => 'cnt', 
      'label' => 'Contact Number', 
      'rules' => 'required' 
     ), 
     array(
      'field'=>'dob', 
      'label'=>'Date Of Birth', 
      'rules'=>'required' 
     ), 
     array(
      'field' => 'design', 
      'label' => 'Designation', 
      'rules' => 'required' 
     ), 
     array(
      'field'=>'pass', 
      'label'=>'Password', 
      'rules'=>'required' 
     ), 
     array(
      'field' => 'cpass', 
      'label' => 'Password Confirmation', 
      'rules' => 'required|trim|min_length[6]|matches[pass]|xss_clean' 
     ), 
     array(
      'field' => 'email', 
      'label' => 'Email', 
      'rules' => 'required' 
     ), 

//  array(
//   'field' => 'prof', 
//   'label' => 'Profile Image', 
//   'rules' => 'required|callback_upload_image' 
//  ) 
    ), 
    'master/SAdmin' => array(
     array(
      'field' => 'empname', 
      'label' => 'Employee Name', 
      'rules' => 'required|trim|min_length[6]|xss_clean' 
     ), 
     array(
      'field' => 'cnt', 
      'label' => 'Contact Number', 
      'rules' => 'required' 
     ), 
     array(
      'field'=>'dob', 
      'label'=>'Date Of Birth', 
      'rules'=>'required' 
     ), 
     array(
      'field' => 'design', 
      'label' => 'Designation', 
      'rules' => 'required' 
     ), 
     array(
      'field'=>'pass', 
      'label'=>'Password', 
      'rules'=>'required' 
     ), 
     array(
      'field' => 'cpass', 
      'label' => 'Password Confirmation', 
      'rules' => 'required|trim|min_length[6]|matches[pass]|xss_clean' 
     ), 
     array(
      'field' => 'email', 
      'label' => 'Email', 
      'rules' => 'required' 
     ) 

    ), 
    'master/task' => array(
     array(
      'field' => 'jtitle', 
      'label' => 'Job Title', 
      'rules' => 'required|trim|xss_clean' 
     ), 
     array(
      'field' => 'jnature', 
      'label' => 'Job Type', 
      'rules' => 'required' 
     ), 
     array(
      'field'=>'assigne', 
      'label'=>'Assigned From', 
      'rules'=>'required' 
     ), 
     array(
      'field' => 'assignto', 
      'label' => 'Assign To', 
      'rules' => 'required' 
     ), 
     array(
      'field'=>'ddate', 
      'label'=>'Due Date', 
      'rules'=>'required' 
     ), 
     array(
      'field' => 'reminder', 
      'label' => 'Reminder', 
      'rules' => 'required|trim|max_length[1]|xss_clean' 
     ), 
//  array(
//   'field'=>'image', 
//   'label' => 'Image', 
//   'rules' => 'required' 
//  ) 
//  

    ) 
); 

?> 
+0

ありがとうございます – jstandshigh

関連する問題