はForm_validation.phpライブラリを拡張するアプリケーション/ライブラリは名前MY_Form_validationファイルの中にクラスを作成します。idは、usersテーブルの主キー
で、$ idはIDの値である文字列
を爆発するために私が使用し、 "@" の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.']');
。 これで、どのコントローラでもis_unique_update検証を使用できます。
オリジナルの値はどのように定義しますか? –
これは、データベースから取得したユーザーuser_nameの元の値になります。 ifステートメントは元のuser_nameと、ユーザーが送信したデータとを比較します。ユーザーがユーザー名を変更すると、その値が存在しないかどうかがチェックされます。そうでない場合は、通常の検証が行われます。 – Jeemusu
それでは、古い値が何であったかを調べるために別のクエリを設定する必要がありますか? –