2017-06-22 119 views
-1

在這裏我已驗證codeIgniter form_validation客戶名稱,它可以防止數字以及特殊字符和NULL。無法顯示codeigniter驗證錯誤

而且我使用了一個回調函數,它允許在白色空間內只存儲字母字符,因爲名稱總是包含空格。

現在的問題是,當驗證失敗時,它不能打印錯誤信息。

這是我的回調函數

public function customAlpha($str) 
    { 
     if (!preg_match('/^[a-z .,\-]+$/i',$str)) 
     { 
      $this->form_validation->set_message('customAlpha', 'The {field} field may only contain alphabetical characters.'); 
      return false; 
     } else { 
      return True; 
     } 
    } 

這是我的控制器代碼

public function customer_upd() 
    { 
     $original_value = $this->db->query("SELECT customer_email FROM customer WHERE id = ".$_POST['ctmr_upd_id'])->row()->customer_email ; 
     if($_POST['cust_upd_email'] != $original_value) { 
      $this->session->set_flashdata('add_failed','Email id must be unique & valid email address.'); 
      $is_unique = '|is_unique[customer.customer_email]'; 
     } else { 
      $is_unique = ''; 
     } 
     $original_value = $this->db->query("SELECT customer_mobile FROM customer WHERE id = ".$_POST['ctmr_upd_id'])->row()->customer_mobile ; 
     if($_POST['cust_upd_mobile'] != $original_value) { 
      $this->session->set_flashdata('add_failed','Mobile no must be unique & exact 10 digit numeric length. '); 
      $is_phoneunique = '|is_unique[customer.customer_mobile]'; 
     } else { 
      $is_phoneunique = ''; 
     } 
     $this->form_validation->set_rules('cust_upd_email', 'Email', 'required|valid_email|trim'.$is_unique); 
     $this->form_validation->set_rules('cust_upd_mobile', 'Mobile', 'required|exact_length[10]|is_natural|trim'.$is_phoneunique); 

     $this->form_validation->set_rules('cust_upd_name', 'Customer', 'trim|required|min_length[3]|callback_customAlpha'); 

     if ($this->form_validation->run()) { 
      $userdata = $this->session->userdata(); 
      $userId = $userdata['id']; 
      if (!$userId): 
       redirect(site_url()); 
      endif; 
      $data = array(
       'customer_name' => ucwords($_POST['cust_upd_name']), 
       'birth_date' => $_POST['cust_upd_bd'], 
       'anniversery_date' => $_POST['cust_upd_dom'], 
       'customer_mobile' => $_POST['cust_upd_mobile'], 
       'customer_email' => $_POST['cust_upd_email'], 
       'status' => $_POST['cust_upd_status'], 
       'address' => $_POST['ctmr_address'], 
       'cat_type' => $_POST['file_cat'] 
      ); 
      $userdata = $this->session->userdata(); 
      $userId = $userdata['id']; 
      $this->db->where('user_id', $userId); 
      $this->db->where('id', $_POST['file_cat']); 
      $this->db->where('cat_status', 'Enable'); 
      $get_file = $this->db->get('category'); 
      $res_file = $get_file->num_rows(); 

      if($res_file >0){ 
       $userdata = $this->session->userdata(); 
       $userId = $userdata['id']; 
       $this->db->where('user_id', $userId); 
       $this->db->where('id', $_POST['ctmr_upd_id']); 
       $ctmr_upd = $this->db->update('customer', $data); 
      } else { 
       $this->session->set_flashdata('edit_failed','Something went wrong.'); 
       redirect('customer/edit/'.$_POST['ctmr_upd_id']); 
      } 
      redirect(site_url() . '/customer'); 
     } else { 
      redirect('customer/edit/'.$_POST['ctmr_upd_id']); 
     } 
    } 

這是我的視圖代碼

      <div class="item form-group"> 
          <label class="control-label col-md-3 col-sm-3 col-xs-12" for="name">Name <span 
             class="required">*</span> 
          </label> 
          <?php 
          foreach ($qry as $res_sel_qry){ 
          ?> 
          <div class="col-md-6 col-sm-6 col-xs-12"> 
           <input id="onlyname" class="form-control col-md-7 col-xs-12" name="cust_upd_name" 
             placeholder="" value="<?php echo $res_sel_qry['customer_name']; ?>" 
             required="required" type="text"> 
          </div> 
          <?php echo form_error('cust_upd_name'); ?> 
         </div> 

有很多事情要驗證和工作良好期望客戶名稱(不顯示那裏的錯誤消息)。 請指導我,我哪裏出錯了?謝謝..

回答

0

移除重定向FUNC

if ($this->form_validation->run()) { 
     $userdata = $this->session->userdata(); 
     $userId = $userdata['id']; 
     if (!$userId): 
      redirect(site_url()); 
     endif; 
     $data = array(
      'customer_name' => ucwords($_POST['cust_upd_name']), 
      'birth_date' => $_POST['cust_upd_bd'], 
      'anniversery_date' => $_POST['cust_upd_dom'], 
      'customer_mobile' => $_POST['cust_upd_mobile'], 
      'customer_email' => $_POST['cust_upd_email'], 
      'status' => $_POST['cust_upd_status'], 
      'address' => $_POST['ctmr_address'], 
      'cat_type' => $_POST['file_cat'] 
     ); 
     $userdata = $this->session->userdata(); 
     $userId = $userdata['id']; 
     $this->db->where('user_id', $userId); 
     $this->db->where('id', $_POST['file_cat']); 
     $this->db->where('cat_status', 'Enable'); 
     $get_file = $this->db->get('category'); 
     $res_file = $get_file->num_rows(); 

     if($res_file >0){ 
      $userdata = $this->session->userdata(); 
      $userId = $userdata['id']; 
      $this->db->where('user_id', $userId); 
      $this->db->where('id', $_POST['ctmr_upd_id']); 
      $ctmr_upd = $this->db->update('customer', $data); 
     } else { 
      $this->session->set_flashdata('edit_failed','Something went wrong.'); 
      redirect('customer/edit/'.$_POST['ctmr_upd_id']); 
     } 
     redirect(site_url() . '/customer'); 
    } else { 
     //redirect('customer/edit/'.$_POST['ctmr_upd_id']); 
    } 
+0

告訴我,如果它工作 – reignsly

+0

那麼當驗證變得錯誤時,其他部分呢? –

+0

爲什麼要投票? 錯誤消息將不會顯示,因爲您將它重定向到頁面。 試着把這個放在虛假的部分。讓我們看看是否會彈出錯誤消息。 'var_dump(validation_errors()); (); – reignsly

0

替換此

<div class="col-md-6 col-sm-6 col-xs-12"> 

隨着

<div class="<?php if (form_error('cust_upd_name') != null) { echo ' has-error'; } ?>"> 

在你的CSS

.has-error { 
color : red; 
} 
+0

它不工作。它會影響我的設計 –