Laravel + Confide:无法通过自定义验证确认用户

时间:2015-01-06 19:26:29

标签: php validation laravel

我正在尝试避免针对此问题修改供应商包。当我添加自定义字段并调用我的自定义验证程序时,由于验证规则,我无法使用确认代码确认用户的电子邮件。目前在app/models/UserValidator.php中使用此功能进行自定义验证:

<?php

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

class UserValidator extends ConfideUserValidator implements UserValidatorInterface {

    // Custom rules for account validation
    public $rules = [
        'create' => [
            'first_name' => 'required|alpha|max:100',
            'last_name' => 'required|alpha|max:100',
            'username' => 'required|min:3|max:20|alpha_dash',
            'email'    => 'required|email|unique:users|max:100',
            'password' => 'required|min:8',
        ],
        'update' => [
            'username' => 'required|min:3|max:20|alpha_dash',
            'email'    => 'required|email|unique:users|max:100',
            'password' => 'required|min:8',
        ]
    ];

}

我可以完美地创建帐户,这只是确认不起作用。我将其回溯到vendor/zizaco/confide/src/Confide/ConfideUser.php - 我发现如果我在save函数下注释掉它:

if ($this->isValid()) {
    return parent::save($options);
}

return false;

并暂时将其替换为:

return parent::save($options);
然后一切都会按照预期的那样运作。我在这里错过了什么吗?更新规则是否应与confirmed列有关?

编辑:为update规则集提供空白数组可以消除错误,但我需要在用户更新其个人资料时验证这些字段。

1 个答案:

答案 0 :(得分:3)

我认为问题在于您在注册后尝试验证用户的电子邮件是否唯一。所以他们的电子邮件已经存在于数据库中(因此并不是唯一的)。删除“ unique:users | ”应该允许您验证字段。

'update' => [
        'username' => 'required|min:3|max:20|alpha_dash',
        'email'    => 'required|email|max:100',
        'password' => 'required|min:8',
    ]