2012-05-18 34 views
1

我已经创建了一个“验证助手”,它应该有我所有的自定义验证规则。问题是,当我在表单验证中使用它们时,它们似乎被忽略。如果我将控件中的函数移动到进行表单验证的地方,那么所有的东西就像一个魅力一样。我的验证助手是自动加载的。CodeIgniter:自定义验证规则不能在助手中?

如果我把它们放在助手中,我有什么理由不能使用这些验证函数?谢谢。

回答

4

辅助函数和控制器中的函数明显不同。

创建extendedMY_Form_validation.phplibraries/,加上有最后的功​​能设置的规则没有callback_并不仅仅是他们的函数名。

例子:

<?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; 

    } 

} 
+0

该文件应该命名为“MY_Form_validation.php”,而不是“ My_Form_validation.php'。注意'MY_'中的大写'Y'。 – Sparky

+0

你是对的,现在已经改变了。 –

+0

我创建了一个名为'validations.php'的库,我写了“class Validations extends CI_Form_validation {”。我写了一条规则,如“trim | required | enforce_password_policy”。但事情不起作用。 :(请帮助我 – Hussain

1

罗宾的答案是对付它的最简单的方法;然而,为什么你不能是这样的:

看看在您的系统/库/ Form_Validation.php,行:587

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

此检查是在所有的回调完成。帮助程序不是类&未加载到CI实例中 - 因此无法从Form_Validation库中获得(因为它使用此方法进行了特定编码)