php - Laravel 5 更新验证电子邮件需要是唯一的
问题描述
我正在尝试以管理员身份更新用户。
我正在更改用户名,但它说电子邮件必须是唯一的。
我该如何解决。
public function update($id, PutUser $request)
{
if (auth()->id() == $id) {
return redirect()->back()->withFlashDanger('Permission Denied, You can not edit own profile here.');
}
$user = User::find($id);
$user->update((array_merge($request->validated(), ['county' => request('county')])));
//Update model_has_roles model with assignees_roles
return redirect()->route('users.index')->withFlashSuccess(trans("alerts.users.updated"));
}
这是请求类
public function authorize()
{
return true;
}
public function rules()
{
$user_id = $this->input('id');
return [
'name' => 'required|string',
'username' => 'required',
'email' => 'required|email|unique:users,email'.$user_id,
'gender' => 'required',
'phone' => 'sometimes|numeric',
'address' => 'sometimes|string',
'country_id' => 'required',
];
}
}
我不断收到失败的电子邮件验证。'电子邮件已被占用'。任何想法
解决方案
email
您在验证中的标签后缺少逗号:
return [
'name' => 'required|string',
'username' => 'required',
'email' => 'required|email|unique:users,email,'.$user_id,
'gender' => 'required',
'phone' => 'sometimes|numeric',
'address' => 'sometimes|string',
'country_id' => 'required',
];
从 Laravel 5.3(我相信)开始,您还可以使用规则构建器来获得更具描述性的验证规则。这些更适合人类阅读和解释,因此会降低错误率:
use Illuminate\Validation\Rule;
return [
'email' => [
'required',
Rule::unique('users', 'email')->except($user_id),
]
];
https://medium.com/@tomgrohl/why-you-should-be-using-rule-objects-in-laravel-5-5-c2505e729b40
推荐阅读
- c# - WPF Radiobutton Group - 绑定到布尔值
- python - 将大量字符串从 Python 传递到 C#
- java - Ubuntu 18.04 上的 Java-jre 安装问题
- webhooks - BigCommerce - 使用 Webhook 验证哈希
- python - 将灰度 2D numpy 数组转换为 RGB 图像
- python - tkinter `OptionMenu` 第一个选项重复(显示两次)
- c++ - 只要我配置了我的项目,bazel 会获取吗?
- visual-studio-code - 有没有办法禁用这些水平线?
- python - 如何使用 Python Rally API 获取给定缺陷的讨论
- reactjs - Firebase 上的部署问题:Mapbox 保持灰色不加载