我的路线
Route :: put('/ users / {$ id}','ApiController @ profileUpdate') - > name('user.update');
//个人资料更新功能 public function profileUpdate(Request $ request){
try{
$validator = $this->validatorProfile($request->all());
if ($validator->fails()) {
$messages = $validator->messages();
return response()->json([
'status' => 400,
'error' => true,
'result' => false ,
'message'=> $messages,
'data' => []
]);
}
$id = $request->id;
$token = $request->header('authorization');
$user_id = JWTAuth::toUser($token)->id;
$user = User::find($user_id);
$data = $request->only('location','state','country','name');
$result = $user->profiles()->where(['user_id' => $$id])->update([
'location' => $data['location'],
'state' => $data['state'],
'country' => $data['country'],
]);
$result1 = $user->where(['id' => $user_id])->update([
'name' => $data['name'],
]);
return response()->json([
'status' => 200,
'error' => false,
'result' => true,
'message'=> "profile updated",
'data' => $data
]);
}
catch(Exception $e){
return response()->json([
'status' => 400,
'error' => true,
'result' => false,
'message'=> $e,
'data' => []
]);
dd($e);
}
}
帮我找错。
我的网址
http://localhost/project/public/api/v1/users/1
当我在邮递员上点击它时会出现404错误。
答案 0 :(得分:1)
您必须调整命名的路由参数选择。 {$id}
无法正常工作,但{id}
可以正常使用。此外,代码中的$$id
引用可能只是$id
。
正如Alexey Mezenin指出的那样,将$id
参数添加到控制器方法以接受路由参数也是一件好事。
旁注:
当您调用$request->id
时,您可能正在尝试获取路由参数,但这可能并不总是返回该参数。如果名为id
的请求中有任何输入将在名为id
的路由参数之前返回。它只会尝试返回路由参数作为后备。
$request->input('id')
明确要求输入名为id
。
$request->route('id')
显式请求名为id
的路由参数。
$request->id
可以是名为id
的输入,也可以是名为id
的路径参数。
答案 1 :(得分:0)
由于您尝试传递ID,因此需要将其添加为参数。所以,改变这个:
public function profileUpdate(Request $request)
要:
public function profileUpdate(Request $request, $id)