Codeigniter, передающий два значения по обратному вызову (form_validation) - PullRequest
2 голосов
/ 01 июня 2011

Я пытаюсь передать два значения в функцию, чтобы я мог проверить имя пользователя и пароль для пользователей. Тем не менее, я не могу заставить его работать. Когда у меня есть одно значение, это не проблема. Но как я могу передать более одного значения?

function($val1, $val2)

Это мой код http://pastebin.com/JKnTEqLN

Ответы [ 3 ]

3 голосов
/ 01 июня 2011

Если вы хотите передать две переменные в вашу функцию, измените строку 6

$this->form_validation->set_rules('username', 'Username', 'required|alpha|xss_clean|callback__check_login');

на

$this->form_validation->set_rules('username', 'Username', 'required|alpha|xss_clean|callback__check_login[$val1,$val2]');

Для более чем двух значений вам нужно использовать http_build_query($val2) итогда explode это внутри вашей функции

1 голос
/ 01 июня 2011

(пожалуйста, поправьте меня, если я не правильно понял вопрос:)

Я бы так не поступил.

Вместо использования обратного вызова функции _check_login () в качестве валидатора для поля имени пользователя (что на самом деле не имеет смысла, imho), почему бы не вызвать функцию check_login($username,$password), КОГДА поля ввода проверяются?

Итак

  if($this->form_validation->run() == FALSE)
  {
   $this->load->view('user_login');
  }
  else
  {
    $this->user_model->check_login();
  }

В пользовательской модели вы будете выполнять проверку

В любом случае, именно для этого предназначена библиотека form_validation, чтобы проверять входные данные, а не разрабатывать данные.

Если вы просто хотите проверить существование пользователя (например, чтобы избежать дублирования) для проверки поля ввода, тогда вам не нужен параметр $ password, поэтому обратный вызов будет работать нормально.

0 голосов
/ 26 января 2015

публичная функция score_check ($ name, $ arr) {Если вы хотите передать две переменные, я нашел лучший способ создать массив с обеими переменными.

$arr = array($val1, $val2);
$this->form_validation->set_rules('username', 'Username', 'required|alpha|xss_clean|callback__check_login['.$arr.']');

Ваш обратный вызов был бы чем-токак

public function check_login($str, $arr) {
      $val1  = $arr[0];
      $val2 = $arr[1];
}

Надеюсь, что помогает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...