laravel 使用经过身份验证的用户进行验证 5.1

laravel validation 5.1 with authenticated user

我正尝试在我的 validator 方法中对我的注册表单进行一些验证。我将 $user->id 连接到我的 nameemail 数组键,这样用户就无法使用已使用的相同名称和电子邮件地址进行注册。

下面是我的AuthController

<?php

namespace App\Http\Controllers\Auth;

use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;

class AuthController extends Controller
{

    use AuthenticatesAndRegistersUsers, ThrottlesLogins;

    public function __construct()
    {
        $this->middleware('guest', ['except' => 'getLogout']);
    }

    protected function validator(array $data)
    {

        return Validator::make($data, [
            'name' => 'required|regex:/^[a-zA-Z]+$/u|max:255|unique:users,name,'.$user->id,
            'email' => 'required|email|max:255|unique:users'.$user->id,
            'password' => 'required|confirmed|min:6',
        ]);
    }

}

每次我点击提交我都会收到一条 Undefined variable: user 错误消息所以我尝试在我的验证器方法上方添加 $user = Auth::user(); 像这样

    // retrieve authenticated user
    $user = Auth::user();
    protected function validator(array $data)
    {

        return Validator::make($data, [
            'name' => 'required|regex:/^[a-zA-Z]+$/u|max:255|unique:users,name,'.$user->id,
            'email' => 'required|email|max:255|unique:users'.$user->id,
            'password' => 'required|confirmed|min:6',
        ]);
    }

但我收到 syntax error, unexpected '$user' 错误消息。我不确定我忽略了什么。

当您创建新用户时,您没有任何 $user 对象,当然您会收到 Undefined variable: user 错误消息。

您的验证仅适用于更新用户个人资料。

您的代码中存在语法错误。这是正确的:

 return Validator::make($data, [
        'name' => 'required|regex:/^[a-zA-Z]+$/u|max:255|unique:users,name',
        'email' => 'required|email|max:255|unique:users,email',
        'password' => 'required|confirmed|min:6',
    ]);