Codeigniter: вызов функции контроллера как функции обратного вызова в правилах проверки
Разобраться все,
У меня есть контроллер, который расширяет 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;
}
}
}
В моем классе клиента -> функция редактирования, то есть...,
class Client extends MY_Controller
{
function edit($id){
$this->form_validation->set_rules("name", "Name", "required|max_length[50]");
}
}
... Я хочу проверить, дублируется ли имя во время обновления. Есть ли способ, которым я могу вызвать функцию "check_unique" из контроллера в правилах проверки?
1 ответ
Вы можете использовать функцию обратного вызова библиотек проверки формы для вызова пользовательских функций проверки.
Поскольку ваш пользовательский метод проверки находится в MY_Controller
и вы наследуете это в своем Client
Класс это будет нормально работать следующим образом.
function edit($id){
$this->form_validation->set_rules("name", "Name", "required|max_length[50]|callback_check_unique");
}
Помните, что вам нужно вызвать вашу функцию, используя
callback_
префикс.
В функции обратного вызова вы также можете передавать аргументы. По умолчанию CI передает строковый параметр в качестве аргумента вашей функции обратного вызова. Так что вам может понадобиться немного изменить свою пользовательскую функцию