【问题标题】:Codeigniter passing two values on callback (form_validation)Codeigniter 在回调中传递两个值(form_validation)
【发布时间】:2011-09-06 10:35:03
【问题描述】:

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

function($val1, $val2)

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

【问题讨论】:

    标签: php oop codeigniter frameworks


    【解决方案1】:

    如果您想将两个变量传递给您的函数,请更改第 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 它

    【讨论】:

      【解决方案2】:

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

      我不会那样做。

      与其使用 _check_login() 函数回调作为用户名字段的验证器(这真的没有意义,恕我直言),为什么不在验证输入字段时调用 check_login($username,$password) 函数?

      所以

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

      在用户模型中,您将进行检查

      无论如何,这就是 form_validation 库的用途,用于验证输入,而不是详细说明数据。

      如果您只想检查用户的存在(例如,避免重复)来验证输入字段,那么您不需要 $password 参数,因此回调可以正常工作。

      【讨论】:

      • 好吧,如果我这样做,我不会从 validation_errors() 收到任何错误消息,对吗?所以,我觉得这有点奇怪..
      • 嗯,换一种方式。所以,无论如何,感谢您的帮助 m8。
      【解决方案3】:

      公共函数 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];
      }
      

      希望有帮助

      【讨论】:

        猜你喜欢
        • 2016-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-16
        • 2015-08-07
        相关资源
        最近更新 更多