【发布时间】:2018-12-25 00:20:36
【问题描述】:
我无法根据某些情况验证用户电子邮件地址。
例如
如果正在创建用户,则电子邮件地址必须是唯一的
如果用户正在更新但电子邮件地址未更改,则忽略唯一电子邮件规则
如果用户正在更新并且他们的电子邮件地址已更改,则它必须是唯一的
我环顾了一下,我知道我可以根据这样的方法指定不同的规则
public function rules()
{
$user = User::find($this->users);
switch($this->method())
{
case 'POST':
{
return [
'user.email' => 'required|email|unique:users,email',
];
}
case 'PUT':
case 'PATCH':
{
return [
'user.email' => 'required|email,
];
}
default:break;
}
}
有什么方法可以让在 put/patch 情况下,规则检查电子邮件地址是否已更改,如果已更改,则它必须是唯一的?
如果没有,是否有更清洁的方法来实现这一目标?也许没有开关盒?也许我还没有偶然发现更深入的验证规则?
【问题讨论】:
-
我添加了一个答案,检查一次
-
@rkj 我听取了另一个用户的建议,暂时删除了 switch 语句以尝试清理代码。如果我重新使用 switch 方法,我会尝试你的答案,谢谢。
-
不需要为我的答案添加开关条件,一行将适用于所有创建,补丁
-
抱歉,我没有注意到您已将其更新为忽略 switch 语句。你的回答很好,谢谢!
-
很高兴它对你有用
标签: php laravel validation laravel-5 request