我在Codeigniter中为表单验证创建了一个自定义函数 . 它挂钩到URL Helper,我通过创建一个MY_url_helper实现了这一点 .
帮助修改:
function valid_url($str) {
$pattern = "/^(http|https):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i";
if (preg_match($pattern, $str)) return TRUE;
else return FALSE;
}
/* End of file MY_url_helper.php */
/* Location: ./application/helpers/MY_url_helper.php */
我如何称呼验证:
$ this-> form_validation-> set_rules('image','Image path','valid_url');
语言文件:
$lang['valid_url'] = "The %s field must contain a valid URL.";
/* End of file form_validation_lang.php */
/* Location: ./system/language/english/form_validation_lang.php */
但是在提交表单时它没有显示任何错误消息 . 如果我更改valid_url函数以回显true和false,它将执行该操作 . 所以它运行该功能 .
如何显示错误消息?
1 回答
您是否在视图中打印验证错误?在视图中的表单上方添加此行,然后查看是否打印 .
<?php echo validation_errors(); ?>
编辑:
基于你的回复的一些事情...我从来没有真正使用“帮助”函数作为验证的回调...我总是在控制器中定义回调,在那里进行验证 . 其他人可能会详细说明您是否可以使用辅助函数作为回调 . 您可能必须在控制器中声明验证功能 . 您还可以从控制器中声明的回调中返回辅助函数,以避免在两个位置重写助手 . 这可能有用 .
我假设您在控制器中加载'url'帮助器?
另外.. CodeIgniter的文档...我相信你应该在你的'set_rules'声明中将'callback_'附加到你的函数名的开头 .
$this->form_validation->set_rules('image', 'Image path', 'callback_valid_url');
http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html#callbacks