Проверка CodeIgniter в библиотеке не принимает обратный вызов - PullRequest
4 голосов
/ 12 июня 2010

Моя проблема заключается в следующем: я пишу библиотеку входа в систему.Эта библиотека имеет функцию _validation (), и она использует библиотеку проверки для проверки данных.При использовании обычных методов проверки это работает просто отлично, но использование функции обратного вызова просто не работает.Он не вызывается.

Я называю это так.

$this->CI->form_validation->set_rules('user', 'Username', 'required|callback__check_user');

Имя функции _check_user и используется имя пользователя _check_user ($ user).Сама функция работает нормально, и я также могу вызвать ее в классе ($ this -> _ check_user ('username')) с рабочим результатом.

Я предполагаю, что может быть проблема, потому что я не работаю в контроллере, поэтому у меня есть экземпляр CI $ this-> CI вместо только исходного экземпляра $ this ->

У кого-нибудь есть подсказки, как это исправить?

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 13 июня 2010

Эй, я нашел способ, который работает для меня. Просто расширяя библиотеку Form_validation в MY_Form_validation.php, вы можете создавать собственные методы проверки. Я думаю, что это чистый способ, и он прекрасно работает. Я строю метод проверки ниже для проверки существующих имен пользователей и паролей. $ value это что-то вроде table_name.fieldname. Я не установил сообщение, чтобы он использовал сообщения _exist из файлов lang.

/**
 * Exist
 *
 * checks if the entry exists in the database
 * returns a boolean
 *
 * @access  private
 * @param   string
 * @param   field
 * @return  boolean
 */
function _exist($str, $value)
{       
    list($table, $column) = explode('.', $value, 2);    
    $query = $this->CI->db->query("SELECT COUNT(*) AS count FROM $table WHERE $column = '$str'");
    $row = $query->row();
    return ($row->count > 0) ? TRUE : FALSE;
}

Спасибо за вашу помощь, хотя.

0 голосов
/ 13 июня 2010

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

Просто сделайте это в контроллере, который вы используете обратный вызов:

function _check_user($user)
{
    $this->load->model('login');
    $result = $this->login->_check_user($user);
    return $result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...