【发布时间】:2012-05-18 12:42:55
【问题描述】:
我创建了一个“验证助手”,它应该包含我所有的自定义验证规则。问题是当我在表单验证中使用它们时,它们似乎被忽略了。如果我在进行表单验证的控制器中移动函数,一切都会像魅力一样工作。我的验证助手是自动加载的。
如果我将这些验证功能放在帮助程序中,是否有任何理由无法使用它们?谢谢。
【问题讨论】:
我创建了一个“验证助手”,它应该包含我所有的自定义验证规则。问题是当我在表单验证中使用它们时,它们似乎被忽略了。如果我在进行表单验证的控制器中移动函数,一切都会像魅力一样工作。我的验证助手是自动加载的。
如果我将这些验证功能放在帮助程序中,是否有任何理由无法使用它们?谢谢。
【问题讨论】:
helper和controller中的函数明显不同。
在你的libraries/ 中创建一个extended MY_Form_validation.php,在那里添加函数,最后设置规则没有 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;
}
}
【讨论】:
MY_Form_validation.php,而不是My_Form_validation.php。注意MY_ 中的大写Y。
validations.php 的库,在其中我写了“class Validations extends CI_Form_validation {”。我写了类似“trim|required|enforce_password_policy”的规则。但事情是行不通的。 :(请帮帮我。
MY_Form_validation.php 而不是 validations.php 否则 CodeIgniter 将找不到该文件。
罗宾的回答是最简单的处理方法;然而,为什么你不能这样做:
查看您的系统/库/Form_Validation.php,行:587
if ( ! method_exists($this->CI, $rule))
{
continue;
}
对所有回调进行此检查。助手不是类,也没有加载到 CI 实例中 - 因此不能从 Form_Validation 库中获得(因为它在此方法中的具体编码方式)
【讨论】: