Codeigniter: вызов функции контроллера как функции обратного вызова в правилах проверки - PullRequest
0 голосов
/ 27 сентября 2018

Deal All,

У меня есть контроллер, который расширяет CI_Controller следующим образом;

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;
    }
}

}

В моем классе клиента -> функция редактирования, котораяis ...,

class Client extends MY_Controller
{
    function edit($id){
            $this->form_validation->set_rules("name", "Name", "required|max_length[50]");
    }
}

... Я хочу проверить, дублируется ли имя во время обновления.Есть ли способ, которым я могу вызвать функцию "check_unique" из контроллера в правилах проверки?

1 Ответ

0 голосов
/ 27 сентября 2018

Вы можете использовать библиотеки проверки формы функция обратного вызова для вызова пользовательских функций проверки.

Поскольку ваш пользовательский метод проверки находится в MY_Controller, и вы наследуете его в своем Clientкласс, он будет работать нормально следующим образом.

function edit($id){
   $this->form_validation->set_rules("name", "Name", "required|max_length[50]|callback_check_unique");
}

Помните, что вам нужно вызывать вашу функцию с использованием префикса callback_.

В функции обратного вызова вы можете передавать аргументытакже.По умолчанию CI передает строковый параметр в качестве аргумента вашей функции обратного вызова.Так что вам может понадобиться немного изменить свою пользовательскую функцию

...