【发布时间】:2014-12-30 11:01:59
【问题描述】:
Laravel 的 Zizaco/confide 包的文档在解释如何使用自定义验证器时描述性不是很强。我希望能够在我的注册过程中验证名字、姓氏、地址、城市、州等字段,但是除了修改供应商包之外,我没有找到任何可行的方法。根据文档,我应该可以把它放在app/models/AccountValidator.php
<?php
use Zizaco\Confide\UserValidatorInterface;
use Zizaco\Confide\ConfideUserInterface;
class AccountValidator implements UserValidatorInterface {
public function validate(ConfideUserInterface $user) {
unset($user->password_confirmation); // Because this column doesn't really exists.
Log::info("Using a custom validator!");
return true;
}
}
在app/start/global.php
App::bind('confide.user_validator', 'AccountValidator');
我尝试将我的规则放入验证函数以及它之外,但没有成功,它不会验证任何内容,而是尝试将空值插入数据库。如here 所述,我也尝试过composer dump-autoload。我找到了this StackOverflow question,但唯一的答案似乎不是“官方”解决方案,Zizaco 没有在 Github 上回复this question(是的,我也尝试过该代码),所以我不确定是什么其他尝试。
有什么建议吗?
【问题讨论】:
-
嗯...看起来你做对了。您是否在模型中添加了
implements ConfideUserInterface并在类声明中添加了use ConfideUser? -
是的,这始终是我做的第一件事。它验证用户名、电子邮件和密码字段 - 没有任何额外内容。但是我确实注意到有two separate rulesets in the vendor package。我是否也应该在自定义验证器中传递该多维数组?
-
看起来您确实需要将
$rules作为多维数组传递。查看 UserValidator.php 的第 163 行。我检查了我的UserValidator,我的设置为多维的。 -
我想我明白了,我一开始只是通过规则而不是验证它们。我设置了验证功能来实际验证数据,现在一切似乎都工作正常。文档不清楚,我以为您只需将规则传递给包,它就会自动处理数据。猜不着..
-
我的
UserValidator中没有validate方法,只有$rules参数(作为多维数组),仅供参考。
标签: php validation laravel