Codeigniter:在验证规则中将控制器函数作为回调函数调用

时间:2018-09-27 04:53:00

标签: validation callback codeigniter-3

全部交易,

我有一个像这样扩展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”函数吗?

1 个答案:

答案 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将字符串参数作为参数传递给回调函数。因此,您可能需要稍微修改自定义功能