在這裏我已驗證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>
有很多事情要驗證和工作良好期望客戶名稱(不顯示那裏的錯誤消息)。 請指導我,我哪裏出錯了?謝謝..
告訴我,如果它工作 – reignsly
那麼當驗證變得錯誤時,其他部分呢? –
爲什麼要投票? 錯誤消息將不會顯示,因爲您將它重定向到頁面。 試着把這個放在虛假的部分。讓我們看看是否會彈出錯誤消息。 'var_dump(validation_errors()); (); – reignsly