2017-01-24 12 views
1

Also ich validiere ein Formular mit Code-Zünder, der meinen Code sehr vereinfacht, aber ich stehe vor einem neuen Problem. Mein Formular wird zunächst als Popup in einer Ansicht geladen. Wenn der Controller jedoch die Antwort nach der Validierung zurückgibt, wird das Formular als separate Webseite geöffnet und nicht nur in der vorherigen Ansicht geladen.CodeIgniter Form Validation Ausgabe

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> 

Controller:

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); 
    } 
} 

form-> (add_user.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> 

wie kann ich das Formular des main_view.php laden nach Die Validierung schlägt vom Controller fehl, und wenn die Validierung erfolgreich ist, möchte ich, dass das Formular innerhalb der Hauptseite geschlossen wird. Ich kann Formvalidierung mit normalem Javascript und PHP durchführen, wollte aber Code-Zünder-Methode der Validierung lernen. Vielen Dank.

Antwort

1

Wenn Sie ein Problem, bei Validierung in Bezug auf Codeigniter haben, dann lesen Sie bitte CodeIgniter Official Form Validation Guide

Ich empfehle Speichern Sets von Validierungsregeln auf eine Konfigurationsdatei

Wenn Sie immer noch die Lese verwirren werden/Rezension das Stück von unten Code wird es Ihnen helfen. Dieser Code wird in der Konfigurationsdatei verwendet.

<?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

Danke für den Vorschlag – jstandshigh