Codeigniter在回调上传递两个值(form_validation)

时间:2011-06-01 15:57:26

标签: php oop codeigniter frameworks

我正在尝试将两个值传递给一个函数,以便我可以检查用户的用户名和密码。但是,我无法让它发挥作用。当我有一个值时,这样做有问题。但是我怎样才能传递多个值?

function($val1, $val2)

这是我的代码 http://pastebin.com/JKnTEqLN

3 个答案:

答案 0 :(得分:3)

如果要将两个变量传递给函数,请更改第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 :(得分:1)

(如果我没有问题,请纠正我:)

我不这样做。

而不是使用_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参数,因此回调可以正常工作。

答案 2 :(得分:0)

public function 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];
}

希望有所帮助