CodeIgniter: custom validation rules can't be

2019-06-01 20:07发布

I've created a "validation helper" that was supposed to have all my custom validation rules. The problem is that when I use them in my form validation, they seem to be ignored. If I move the functions in the controller that is doing the form validation, everything works like a charm. My validation helper is autoloaded.

Is there any reason why I can't seem to use these validation functions if I put them in a helper? Thanks.

2条回答
你好瞎i
2楼-- · 2019-06-01 20:21

A function in a helper and a controller are different obviously.

Create an extended MY_Form_validation.php in your libraries/, add the functions there and finally set the rules without callback_ and just their function name.

Example:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Form_validation extends CI_Form_validation {

    /* set_rule('custom_require') */
    function custom_require($str) {

        return (bool)$str;

    }

}
查看更多
爷的心禁止访问
3楼-- · 2019-06-01 20:25

Robin's answer is the easiest way to deal with it; however, the why you can't is this:

look in your system/libraries/Form_Validation.php, line: 587

if ( ! method_exists($this->CI, $rule))
{
  continue;
}

This check is done on all callbacks. Helpers are not classes & not loaded into the CI instance - and so not available from the Form_Validation library (because of the way it is specifically coded in this method)

查看更多
登录 后发表回答