在我LoginController
我定义了一个自定义重定向路由,如下所示:
protected $redirectTo = '/home';
工作正常,但我希望在用户登录时显示toastr通知,因此我想flash
使用此重定向的某些数据。
在我的其他控制器中,我做这样的事情并且运作良好
$notification = array(
'message' => 'User okay',
'alert_type' => 'success',
);
return Redirect::route('user')->with('notification', $notification);
但我无法通过$redirectTo
请帮我解决这个问题
答案 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);
}
希望它有所帮助。