使用邮递员在 Laravel 5.5 中的 null 上调用成员函数 store()
Call to a member function store() on null in Laravel 5.5 using postman
我正在使用 Postman 测试文件上传,但我总是收到此错误。我已经尝试在邮递员请求字段 "multipart/form-data" 的 headers 中添加和删除,但没有结果。
Postman screenshot
我的代码:
public function update(Request $request, $id) {
$validator = Validator::make($request->all(), [
'name' => 'string|max:255',
'second_name' => 'string|max:255',
'description' => 'string|max:255',
'gender' => 'string|max:255',
'admin' => 'boolean',
'birthday' => 'string|max:255',
'email' => 'string|email|max:255|unique:users',
'password' => 'min:6|required_with:password_confirmation|same:password_confirmation',
'file' => 'file',
]);
if ($validator->fails()) {
return response()->json(['error' => $validator->errors()], 401);
}
$user = User::find($id);
$user->name = $request->input('name');
$user->second_name = $request->input('second_name');
$user->description = $request->input('description');
$user->gender = $request->input('gender');
$user->admin = $request->input('admin');
$user->birthday = $request->input('birthday');
$user->email = $request->input('email');
$user->imageUrl = $request->file('file')->store('images');
if($user->save()) {
return new $user;
}
}
您收到错误消息,因为您的请求中没有正确设置文件。
由于 $request->file('file')
返回 null,而您正试图对 null 调用方法,导致出现异常。
当使用 Postman 向 Laravel 发出 PUT 或 PATCH 请求时,必须采取与通常略有不同的方法。
由于 Laravel 处理 PUT 和 PATCH 请求的方式,您需要在 Postman 中将请求作为 POST 请求发送,并提供 _method
值 PUT
在 header 中。这就是 Laravel 所期望的。
如果这是必填字段,我还建议将文件的验证规则更改为以下内容:
'file' => 'file|required'
这将使您的 API 故障排除更加容易。如果在请求中未检测到文件,将提供 JSON 错误响应。
我正在使用 Postman 测试文件上传,但我总是收到此错误。我已经尝试在邮递员请求字段 "multipart/form-data" 的 headers 中添加和删除,但没有结果。
Postman screenshot
我的代码:
public function update(Request $request, $id) {
$validator = Validator::make($request->all(), [
'name' => 'string|max:255',
'second_name' => 'string|max:255',
'description' => 'string|max:255',
'gender' => 'string|max:255',
'admin' => 'boolean',
'birthday' => 'string|max:255',
'email' => 'string|email|max:255|unique:users',
'password' => 'min:6|required_with:password_confirmation|same:password_confirmation',
'file' => 'file',
]);
if ($validator->fails()) {
return response()->json(['error' => $validator->errors()], 401);
}
$user = User::find($id);
$user->name = $request->input('name');
$user->second_name = $request->input('second_name');
$user->description = $request->input('description');
$user->gender = $request->input('gender');
$user->admin = $request->input('admin');
$user->birthday = $request->input('birthday');
$user->email = $request->input('email');
$user->imageUrl = $request->file('file')->store('images');
if($user->save()) {
return new $user;
}
}
您收到错误消息,因为您的请求中没有正确设置文件。
由于 $request->file('file')
返回 null,而您正试图对 null 调用方法,导致出现异常。
当使用 Postman 向 Laravel 发出 PUT 或 PATCH 请求时,必须采取与通常略有不同的方法。
由于 Laravel 处理 PUT 和 PATCH 请求的方式,您需要在 Postman 中将请求作为 POST 请求发送,并提供 _method
值 PUT
在 header 中。这就是 Laravel 所期望的。
如果这是必填字段,我还建议将文件的验证规则更改为以下内容:
'file' => 'file|required'
这将使您的 API 故障排除更加容易。如果在请求中未检测到文件,将提供 JSON 错误响应。