擴展Form_validation.php庫應用程序中創建的類/庫文件名MY_Form_validation。PHP
<?php
class MY_Form_validation extends CI_Form_validation{
protected $ci;
public function __construct($config = array()){
parent::__construct($config);
$this->ci =& get_instance();
}
public function is_unique_update($str, $field){
$explode=explode('@', $field);
$field_name=$explode['0'];
$field_id_key=$explode['1'];
$field_id_value=$explode['2'];
sscanf($field_name, '%[^.].%[^.]', $table, $field_name);
if(isset($this->ci->db)){
if($this->ci->db->limit(1)->get_where($table, array($field_name => $str,$field_id_key=>$field_id_value))->num_rows() === 0){
$this->ci->form_validation->set_message('is_unique_update', 'The {field} field must contain a unique value.');
return false;
}
return true;
}
}
}
現在在你的控制器
$this->form_validation->set_rules('user_name', 'User Name', 'required|trim|xss_clean|is_unique_update[[email protected]@'.$id.']');
「@」 我用爆炸的字符串
其中id是用戶表的主鍵
並且$ id是id的值。 現在,您可以在任何控制器中使用此is_unique_update驗證。
我將原始值定義爲什麼? –
這將是從數據庫中提取的用戶user_name的原始值。 if語句將原始user_name與用戶提交的數據進行比較。如果用戶更改他們的用戶名,它將檢查該值是否已經存在,否則它只會進行正常的驗證。 – Jeemusu
因此,我需要設置另一個查詢來查明舊值是什麼? –