全部交易,
我有一个像这样扩展CI_Controller的控制器;
get
}
在我的客户类->编辑功能中,即...
class MY_Controller extends CI_Controller
{
function check_unique($table, $field, $message_label, $value, $except_id){
$query = "SELECT * FROM $table WHERE $field = $value AND id != $except_id LIMIT 1";
if(count($this->db->query($query)->row_array()) == 0 ){
return TRUE;
}else{
$this->form_validation->set_message($field, "The field '" . $message_label . "' is not available. Please try a different value.");
return FALSE;
}
}
...我想检查更新时名称是否重复。有什么方法可以在验证规则中从控制器调用“ check_unique”函数吗?
答案 0 :(得分:0)
您可以使用表单验证库callback功能来调用自定义验证功能。
由于您的自定义验证方法位于MY_Controller
中,并且您正在Client
类中继承该方法,因此可以按以下方式正常工作。
function edit($id){
$this->form_validation->set_rules("name", "Name", "required|max_length[50]|callback_check_unique");
}
请记住,您需要使用
callback_
前缀来调用函数。
在Callback函数中,您也可以传递参数。默认情况下,CI将字符串参数作为参数传递给回调函数。因此,您可能需要稍微修改自定义功能