Laravel + Confide:无法通过自定义验证确认用户
Laravel + Confide: Unable to confirm user with custom validation
我试图避免为这个问题修改供应商包。当我添加自定义字段并调用我的自定义验证器时,由于验证规则,我无法使用确认码确认用户的电子邮件。目前在 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
规则集提供空白数组可以消除错误,但我需要在用户更新其个人资料时验证这些字段。
我认为问题在于您试图在用户注册后验证他们的电子邮件是唯一的。所以他们的电子邮件已经在数据库中(因此不是唯一的)。删除“unique:users|”应该允许您验证字段。
'update' => [
'username' => 'required|min:3|max:20|alpha_dash',
'email' => 'required|email|max:100',
'password' => 'required|min:8',
]
我试图避免为这个问题修改供应商包。当我添加自定义字段并调用我的自定义验证器时,由于验证规则,我无法使用确认码确认用户的电子邮件。目前在 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
规则集提供空白数组可以消除错误,但我需要在用户更新其个人资料时验证这些字段。
我认为问题在于您试图在用户注册后验证他们的电子邮件是唯一的。所以他们的电子邮件已经在数据库中(因此不是唯一的)。删除“unique:users|”应该允许您验证字段。
'update' => [
'username' => 'required|min:3|max:20|alpha_dash',
'email' => 'required|email|max:100',
'password' => 'required|min:8',
]