Laravel:使用自定义请求类验证表单请求时出现错误“未定义的变量”

时间:2019-08-29 05:15:58

标签: php laravel validation

在Laravel(5.8)控制器中,我尝试为我的update()模型制作User函数。 我使用自己的类UpdateRequest验证数据。当我在此类中放入变量$user时,出现错误Undefined variable: user

<?php

namespace App\Http\Requests\Users;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;

class UpdateRequest extends FormRequest
{

    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'name'  => 'required|string|alpha_dash|max:255|min:6',
            'email' => ['required',
                        'string',
                        'email',
                        'max:255',
                        Rule::unique('users')->ignore($user->id)],
         ];
    }
}


public function update(User $user, UpdateRequest $request)
    {
        $user->update($request->only(['name', 'email']));
        return redirect()->route('users.index');
    }

但是,如果我在控制器validate方法中使用update()函数,则一切正常。

public function update(User $user, Request $request)
    {
     $this->validate($request, [
           'name'  => 'required|string|alpha_dash|max:255|min:6',
           'email' => 'required|string|email|max:255|unique:users,id,' . $user->id,
        ]);

        $user->update($request->only(['name', 'email']));

        return redirect()->route('users.index');
    }

3 个答案:

答案 0 :(得分:2)

在自定义请求类中,您没有初始化$user,而是尝试使用它,而在控制器方法中,$user作为参数传递。

请求中的

注意 $this->user返回当前已通过身份验证的用户,因此请确保您始终要使用其ID,而不是传入用户的ID,因此我正在使用request('user')从URL获取用户ID。

因此,请尝试以下操作:

public function rules()
{
    return [
            'name'  => 'required|string|alpha_dash|max:255|min:6',
            'email' => ['required',
                        'string',
                        'email',
                        'max:255',
                        Rule::unique('users')->ignore(request('user'))],
         ];
}

答案 1 :(得分:1)

您需要将r = libusb_bulk_transfer(dev_handle, (1 | LIBUSB_ENDPOINT_OUT), (unsigned char *)data, 1382400, &actual, 10000); libusb_bulk_transfer(dev_handle, (1 | LIBUSB_ENDPOINT_IN), (unsigned char *)receive_buf, actual, &actual, 10000); 更改为$user->id,它应该可以正常工作。检查以下内容:

$this->user->id

希望对您有帮助!

答案 2 :(得分:0)

UpdateRequest类构造函数中缺少用户类实例,或者您可以尝试使用$ this-> user-> id。可能会对您有帮助。