当前位置: 首页 > 知识库问答 >
问题:

Laravel 5更新验证电子邮件必须是唯一的

黎浩然
2023-03-14

我正在尝试更新一个用户,作为管理员。

我正在更改用户名,但上面说电子邮件必须是唯一的。

我该怎么解决这个问题。

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',
         ];
     }
}

我一直收到失败的电子邮件验证。电子邮件已经被拿走了。有什么想法吗

共有1个答案

罗鸿畴
2023-03-14

验证中的电子邮件标签后缺少逗号:

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-应该-使用-规则-对象-in-laravel-5-5-c2505e729b40

 类似资料:
  • 嗨,伙计们,我正在尝试在我的应用程序中进行自动登录,但在登录完成之前,我想知道用户是否验证了他的电子邮件或否。 问题是:即使我验证了我的帐户,代码也看不到这个并说是假的。 这是我的密码。 这条线总是假的,即使我验证了我的帐户。

  • 我在我的应用程序中使用Firebase认证,用户可以使用电子邮件和密码注册,他必须验证电子邮件。 用户收到验证邮件,但当他验证邮件并返回应用程序时,isEmailVerified()始终为false。所以我的应用程序仍然不允许用户使用所有功能,尽管事实上他已经验证了他的电子邮件。 但是如果他们注销并再次登录,isEmailVerified()立即返回true。但是注销用户然后重新登录是不是很好。

  • 我设置了用户池,将电子邮件用作用户标识符(还配置为需要电子邮件验证)。每个主要操作/流程(登录、注册、更改密码、重置密码)似乎都工作正常,并符合预期。 有一件重要的事情并没有像人们预期的那样起作用,那就是更改电子邮件流: 当请求更改电子邮件时,Cognito会按预期向新电子邮件发送验证代码,但它也会在验证之前将电子邮件更新为新值。 当f.ex.:新电子邮件输入错误(因此验证码永远不会到达)且用户忘

  • 我很想知道,当使用Axon框架来验证一个电子邮件字段对于联系人聚合的一组电子邮件是唯一的时,最佳实践方法是什么。 示例设置 null 2.在单独的持久层中进行验证 这种方法引入了一个新的持久层,它将验证聚合内部的唯一性。 在ContactCreateCommand的ContactAggregate命令处理程序中,我们可以针对这个持久层发出一个查询(例如,postgres中的一个表,上面有唯一的索引

  • 我正在提示我的应用程序用户提供电子邮件凭据。 在用户插入电子邮件并通过后,我想验证该帐户。 我正在使用javax。邮政有没有办法验证帐户?只确保凭据确实有效——否则我想显示一个无效用户并传递消息。 也许是某种表演方式: 并在不发送任何内容的情况下检查身份验证异常。

  • 我有一个活动,我希望用户等待电子邮件帐户验证,但它不会将用户带到mainActivity。一旦帐户验证,我应该如何解决这个问题? 请参见下面的我的代码;