如何将设置规则中的多个参数发送到codeIgniter中的公共函数

时间:2018-10-28 07:35:21

标签: codeigniter

参考链接是这样:

Check duplicate data in CodeIgniter try to make a callback function

这是我的控制器:

function saveData(){
    $value = $this->input->post('Id');
    $fromtable = 'tbl_tablename';
    $fromwhere = 'Id';
    $this->form_validation->set_rules('productId', '', 'callback_check_duplicate_record[' . $value,$fromtable,$fromwhere . ']');

    if ($this->form_validation->run() == FALSE) {
        $this->session->set_flashdata('error', 'Record already exists.');
        redirect('addNew');
        return;
    }
}
public function check_duplicate_record($value,$fromtable,$fromwhere) {

return $this->user_model->checkRecordExists($value,$fromtable,$fromwhere);

}

这对1个参数有效,但是如何发送3个参数。

我在哪里做错了

1 个答案:

答案 0 :(得分:0)

您说的话并没有做错什么,只是回调函数仅设计用于处理1个参数。

由于您的两个值都是硬编码的,因此您实际上不需要从技术上传递它们。

$this->form_validation->set_rules('productId', '', 'callback_check_duplicate_record[' . $value . ']');

public function check_duplicate_record($value) {
    $fromtable = 'tbl_tablename';
    $fromwhere = 'Id';
    return $this->user_model->checkRecordExists($value,$fromtable,$fromwhere);
}

老实说,它甚至看起来都不像您需要表单验证,因为您唯一的验证者是回调,只需使用:

if (!$this->user_model->checkRecordExists($value,$fromtable,$fromwhere)) {
        $this->session->set_flashdata('error', 'Record already exists.');
        redirect('addNew');
        return;
}