Php Laravel与机密-自定义验证器不工作?

Php Laravel与机密-自定义验证器不工作?,php,validation,laravel,Php,Validation,Laravel,在解释如何使用自定义验证器时,的包文档不是很有描述性。我希望能够验证我的注册过程中的名字、姓氏、地址、城市、州等字段,但是除了修改供应商包之外,我还没有发现任何有效的方法。根据文档,我应该能够将其放入app/models/AccountValidator.php <?php use Zizaco\Confide\UserValidatorInterface; use Zizaco\Confide\ConfideUserInterface; class AccountValidator i

在解释如何使用自定义验证器时,的包文档不是很有描述性。我希望能够验证我的注册过程中的名字、姓氏、地址、城市、州等字段,但是除了修改供应商包之外,我还没有发现任何有效的方法。根据文档,我应该能够将其放入
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::bind('confide.user_validator', 'AccountValidator');
我尝试将我的规则放入validate函数以及它之外,但没有成功,它将尝试将空值插入数据库,而不是验证任何内容。如前所述,我还尝试了
composer dump autoload
。我发现,但唯一的答案似乎不是“官方”解决方案,Zizaco也没有在Github上回复(是的,我也尝试过该代码),所以我不确定还可以尝试什么

有什么建议吗?

我就是这样做的:

<?php

use Zizaco\Confide\UserValidator as ConfideUserValidator;
use Zizaco\Confide\UserValidatorInterface;

class UserValidator extends ConfideUserValidator implements UserValidatorInterface
{
    public $rules = [
        'create' => [
            'username' => 'required',
            'email'    => 'required|email',
            'password' => 'required|min:4',
        ],
        'update' => [
            'username' => 'required',
            'email'    => 'required|email',
            'password' => 'required|min:4',
        ]
    ];
}

嗯……看起来你做得对。您是否向模型中添加了
implements-ConfideUserInterface
,并在类声明中添加了
use-ConfideUser
?是的,这始终是我首先要做的事情之一。它会验证用户名、电子邮件和密码字段,而不是其他字段。但我确实注意到了这一点。我是否也应该在自定义验证器中传递该多维数组?看起来您确实需要将
$rules
作为多维数组传递。看看UserValidator.php的第163行。我检查了我的
UserValidator
,我的设置是多维的。我想我弄明白了,我一开始只是传递规则,而不是验证规则。我设置了validate函数来实际验证数据,现在一切都正常了。文档不清楚,我以为您只需要将规则传递给包,包就会自动处理数据。我猜不是。我的
UserValidator
中没有
validate
方法,只有
$rules
参数(作为多维数组),仅供参考。