Php 拉雷维尔:错误“;未定义变量";当我使用自定义请求类验证表单请求时
在Laravel(5.8)控制器中,我尝试为我的Php 拉雷维尔:错误“;未定义变量";当我使用自定义请求类验证表单请求时,php,laravel,validation,Php,Laravel,Validation,在Laravel(5.8)控制器中,我尝试为我的用户模型创建update()函数。 我使用自己的类UpdateRequest验证数据。当我把变量$user放到这个类中时,我有一个错误未定义的变量:user <?php namespace App\Http\Requests\Users; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; class UpdateRequest exte
用户
模型创建update()
函数。
我使用自己的类UpdateRequest
验证数据。当我把变量$user
放到这个类中时,我有一个错误未定义的变量: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');
}
您需要将
$user->id
更改为$this->user->id
,它应该可以正常工作。检查以下内容:
return [
'name' => 'required|string|alpha_dash|max:255|min:6',
'email' => ['required',
'string',
'email',
'max:255',
Rule::unique('users')->ignore($this->user->id)],
];
希望它能帮助你 在自定义请求类中,您没有初始化
$user
并尝试使用它,而在控制器方法中,$user
作为参数传递
注意$this->user
在请求中返回当前经过身份验证的用户,因此请确保您始终希望使用他的ID,而不是传入用户的ID,因此我使用请求('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'))],
];
}
UpdateRequest类构造函数中缺少用户类实例,或者您可以尝试使用$this->User->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'))],
];
}