【问题标题】:CodeIgniter Validation in Library does not accept callback库中的 CodeIgniter 验证不接受回调
【发布时间】:2011-03-03 01:32:45
【问题描述】:

我的问题如下:我正在编写一个登录库。 这个库有一个函数_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->

有人知道如何解决这个问题吗?

提前致谢。

【问题讨论】:

  • “必需”会触发吗?您是否为回调设置了错误消息?如果你 echo 在回电中有什么问题,你看到了吗?你的回调函数是protectedprivate 还是什么?
  • 好吧,require 确实会触发。我确实设置了一条错误消息(需要唤起它)。是的,回调是私有的,但不受保护。

标签: php validation codeigniter callback


【解决方案1】:

嘿,我想出了一个适合我的方法。通过扩展 MY_Form_validation.php 中的 Form_validation 库,您可以创建自定义验证方法。我认为这是一种干净的方式,而且效果很好。我构建了以下验证方法来检查现有的用户名和密码。 $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;
}

感谢您的帮助。

【讨论】:

  • 我认为这可能是最好的方法。它在您使用表单验证库的任何地方都可用,而不仅仅是在您创建的单个自定义库中。
  • 仅供大家参考,当我尝试使用 MY_Form_validation 扩展表单验证库时,让我感到困惑的一件事是去掉 ->form_validation->set_rules(...) 中的 callback_,因为它是不再是控制器内的回调。请在上面@JordanArseno 的回答中注意这一点,其中belongstowork NOTcallback_ 开头
【解决方案2】:

表单验证回调只会在当前控制器内的方法上触发。

只需在您使用回调的控制器中执行此操作:

function _check_user($user)
{
    $this->load->model('login');
    $result = $this->login->_check_user($user);
    return $result;
}

【讨论】:

  • 好吧,这不起作用,因为我正在构建一个库而不是控制器。没有其他方法可以进行有效的回调吗?
  • 我认为它只是检查$this->_my_callback(),所以我不明白为什么这种方法在库中不起作用。
  • 嗯,它没有。我猜这是因为它必须检查 $this->CI->_my_callback()。
猜你喜欢
  • 2014-09-24
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2016-10-23
相关资源
最近更新 更多