如何从另一个函数将参数传递给资源控制器中的show()方法

时间:2016-02-16 13:39:48

标签: php laravel

我知道show($id)方法的路由名称是some_name/parameter。这里我有一个登录验证机制,如果用户通过了身份验证,我想显示用户配置文件。我有一个名为的函数我loginUser()内的userController。我想在成功登录时将用户重定向到user.show路由。但我不知道如何将参数值传递给show method。目前我收到错误:

  

缺少[Route:user.show] [URI:user / {user}]所需的参数。

loginUser()函数:

public function loginUser(Request $request){

        $data = $request->all();

        $rules = array(
           'name' => 'required',
           'password'=>'required'
        );

        // Create a new validator instance.
        $validator = Validator::make($data, $rules);
        if($validator->fails()){

            $errors=$validator->messages();
            return redirect()->back()->withErrors($validator);

        }else{

            if(Auth::attempt(['name'=>$request['name'],'password'=>$request['password']])){

                return redirect()->route('user.show')->with('name',$request['name']); // pass control to show() function
            }else{
                return redirect()->back()->with('data', 'wrong username or password');
            }
        }
    }
userController中的

show()方法:

public function show($user)
{
    //
    $info=userModel::where('id','=',$user)->get(array('name'));
    return View::make('user.show')->with('name',$info);

}

2 个答案:

答案 0 :(得分:3)

您的路由user.show需要一个ID来确定要显示的用户。像这样:

redirect()->route('user.show', [$userId])->with(...);

例如,如果$ userId为1,则会解析为URI:user / 1

如果要显示用户索引,那就是不同的路径。

答案 1 :(得分:1)

试试这个

   redirect()->route('user.show', [$userId]);

你不能在控制器中使用$name。在重定向中删除with