【问题标题】:laravel validation 5.1 with authenticated userlaravel 验证 5.1 与经过身份验证的用户
【发布时间】:2016-08-18 01:58:59
【问题描述】:

我试图在我的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' 错误消息。我不确定我忽略了什么。

【问题讨论】:

    标签: php laravel-5.1


    【解决方案1】:

    当您创建新用户时,您没有任何$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',
        ]);
    

    【讨论】:

    • 那么我如何在 laravel 注册期间验证重复的姓名和电子邮件地址?你能指出我正确的方向吗?
    • 您想用姓名和电子邮件使一行唯一吗?如果它是真的那么你不应该使用 $user->id
    • 我认为这就是我想要完成的。例如,一个用户使用名称foo 和电子邮件foo@foo.com 进行注册,我不希望其他人使用相同的凭据进行注册
    • 当您将数据插入用户表时,验证器检查是否存在您输入的任何名称和电子邮件。这里我们不需要$user->id。
    • 有来自 laravel 的文档吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 2019-05-19
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 2020-11-15
    • 2016-01-17
    相关资源
    最近更新 更多