Laravel 5.5表单验证请求唯一规则无数据

时间:2018-01-17 12:47:46

标签: laravel laravel-5.5

目前正在将Laravel从v5.2更新到5.5,并且无法弄清楚我是如何获得"独特的"规则正在进行更新。

这是我在Laravel 5.2上运行良好的规则

  public function rules()
{
    $retVal = [
        'username' => 'required|alpha_dash|min:4|max:30',
        'password' => 'min:6|confirmed',
        'password_confirmation' => 'min:6',
        'email' => 'required|email|unique:users,email,' . $user->id,
        'roles_list' => 'required',
    ];



    if (stristr($this->get('username'), '@'))
    {
        $retVal['username'] = 'required|email';

    }

    return $retVal;
}

但现在在Laravel 5.5中,我总是得到一个"电子邮件独特的" -error更新。当我手动输入用户ID时,它可以工作。就像在Laravel文档中描述的一样,它应该有效:

https://laravel.com/docs/5.5/validation#form-request-validation

我不知道如何在我的表单请求中访问$ user对象。 非常感谢您提前协助!

1 个答案:

答案 0 :(得分:0)

您的$user变量似乎为空。

如果您尝试在请求课程中检索当前经过身份验证的用户,可以尝试以下操作:

$user = $this->user();

接下来,您必须稍微更改email规则:

'email' => 'required|email|unique:users,email,' . ($user ? $user->id : 0),