我的User_model有一个名为is_unique_email($ email)的公共方法。此方法检查用户是否具有带有状态标志检查的uniqe邮件地址。这也是我无法使用CodeIgniter的标准is_unique验证规则的原因。
我正在为我的验证规则组使用带有配置数组的form_validation.php。我的问题是:如何调用模型方法来检查新用户的电子邮件地址?我搜索并尝试了很多东西,但没有任何效果。我首选的电话是|管道分离器。
赞:trim|required|max_length[70]|valid_email|
<〜这里是模型回调〜>
这个回调是否有任何解决方案,或者没有办法,我必须扩展Form_validation系统库?
我正在使用CodeIgniter 3.1.7。
提前致谢!
答案 0 :(得分:0)
<强>更新强>
因为我总是通过扩展form_validation
库来做事我忘了这个:
和这个(匿名函数):
https://codeigniter.com/user_guide/libraries/form_validation.html#callable-use-anything-as-a-rule
可能对你更好。如有疑问,请务必阅读文档;)
是的,您可以扩展application/library
库。在MY_Form_validation.php
中制作一个class MY_Form_validation extends CI_Form_validation {
并将其扩展为CI&#39; s
/**
* Checks to see if bot sum is valid
* e.g. equals the session stored values
*
* @param int $sum
* @return boolean
*/
public function valid_bot_sum($sum) {
$generated = $this->CI->session->bot_first_number + $this->CI->session->bot_second_number;
if ($generated !== intval($sum)) {
$this->set_message('valid_bot_sum', 'Invalid bot sum.');
return false;
} else {
return true;
}
}
然后你可以做这样的事情:
form_validation
现在可以通过管道分隔符访问您的函数作为任何本机$this->CI
验证函数。请确保在我完成后将消息设置为false,否则您将收到错误消息。您可以像r
那样访问CI实例。
在你的情况下,你可以将函数从模型迁移到这个文件中,或者你可以通过在函数中加载模型并调用函数来调用它,然后测试它是否计算为true / false并处理为上方。