Laravel - LoginController |如何使用参数设置$ redirectTo路由?

时间:2017-04-28 12:41:30

标签: php laravel laravel-5.4

在我LoginController我定义了一个自定义重定向路由,如下所示:

protected $redirectTo = '/home';

工作正常,但我希望在用户登录时显示toastr通知,因此我想flash使用此重定向的某些数据。

在我的其他控制器中,我做这样的事情并且运作良好

$notification = array(
                        'message' => 'User okay', 
                        'alert_type' => 'success',
                      );
return Redirect::route('user')->with('notification', $notification);

但我无法通过$redirectTo

弄清楚如何解决这个问题

请帮我解决这个问题

4 个答案:

答案 0 :(得分:3)

传递“消息包”的一种方法是在LoginController中创建redirectTo method

开箱即用此方法不存在,因为它继承自 trait RedirectsUsers 所以,只需编写并根据需要完成,它将在用户拥有时执行已经过身份验证(如函数名称所示)

protected function redirectTo(Request $request)
{
    $notification = array(
        'message' => 'User okay', 
        'alert_type' => 'success',
    );
    return Redirect::route($this->redirectTo)->with('notification', $notification);
}

如您所见, trait RedirectsUsers 正在寻找已定义的redirectTo function或使用您定义为$redirectTo的变量

public function redirectPath()
{
    if (method_exists($this, 'redirectTo')) {
        return $this->redirectTo();
    }

    return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';
}

否则,如果您要传递的参数是一个简单的GET参数,您可以使用相同的经过验证的函数并根据您的喜好设置参数,也可以使用动态参数

protected function redirectTo(Request $request)
{
    return redirect()->route('route.name', [param1 => value1, param2 => value2]);
}

对于重定向目的,这更清楚,然后使用其他功能,如之前建议的“经过身份验证的”。

答案 1 :(得分:0)

您可以在LoginController中使用自定义逻辑设置方法redirectTo()。该方法将首先在trairect RedirectsUsers的redirectPath()中调用。

希望它有所帮助 CV

答案 2 :(得分:0)

只需你可以使用para params,/home?your_data='blabla'&another_data='blabla' 然后使用控制器中的参数显示在视图中。 但是在laravel你可以做得更漂亮;

Route('home{notification?}','YourController@yourAction');

并在YourController中你应该做

public function yourAction($notification = null) {
   if(isset($notification) {
//do something with notification
}
}

答案 3 :(得分:0)

您可以通过在LoginController"

中编写此函数来完成此操作
protected function authenticated(Request $request, $user)
{
    $notification = array(
                    'message' => 'User okay', 
                    'alert_type' => 'success',
                  );



return Redirect::route('user')->with('notification', $notification);
}

希望它有所帮助。