在控制器中,我正在验证注册表单字段的输入。我正在进行简单的验证,例如必填字段,电子邮件验证等。
当我成功提交时,我继续尝试创建用户(我正在使用Sentry包)。我希望能够捕获此过程中的错误,然后将它们附加到验证错误并将它们附加到特定字段。例如:如果电子邮件已存在,我想在“电子邮件字段”中插入错误并为其提供自定义错误消息。
我希望有一些简单的方法可以做到这一点,例如(伪代码):
$ validation-> error() - > insert_error($ field_name,$ message)
这样做的简单方法是什么?
答案 0 :(得分:0)
本机Validation类不允许这样做。
但我可以看到2个解决方案。
第一个解决方案(没有测试,这只是为了得到这个想法):
<?php
class CustomFieldError {
function rule_which_always_fail($val) {
return false;
}
}
function insert_error($validation, $field_name, $error) {
$validation->field($field_name)->->add_rule(array('CustomFieldError', 'rule_which_always_fail'))->set_message($error);
}
// You need to do that before $validation->run();
if ($duplicate_email) {
insert_error($validation, 'email', 'Duplicate email');
}
第二种解决方案:
使用您自己的Replace and extends \ Fuel \ Core \ Validation类。
这样,您可以直接在Validation类中添加insert_error()方法,并使用$this->errors['field_name'] = 'Error message';
[edit]如果你想使用第二个解决方案,还要确保在他们的Github跟踪器中提交功能请求:)