put方法无法在laraverl中传递参数

时间:2017-12-10 10:58:22

标签: laravel

我的路线

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错误。

2 个答案:

答案 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)