【问题标题】:Laravel + Confide: Unable to confirm user with custom validationLaravel + Confide:无法通过自定义验证确认用户
【发布时间】:2015-01-07 07:26:34
【问题描述】:

我试图避免针对这个问题修改供应商包。当我添加自定义字段并调用我的自定义验证器时,由于验证规则,我无法使用确认码确认用户的电子邮件。目前在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 规则集提供一个空白数组可以消除错误,但是当用户更新他们的个人资料时,我需要验证这些字段..

【问题讨论】:

    标签: php validation laravel


    【解决方案1】:

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

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

    【讨论】:

    • 是的,就是这样。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-12-09
    • 2017-11-01
    • 1970-01-01
    • 2014-02-02
    • 2012-06-21
    • 2021-09-06
    • 2023-01-13
    • 2018-05-12
    相关资源
    最近更新 更多