在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');
}
答案 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。可能会对您有帮助。