我可能会做一些非常愚蠢的事情。意外地产生了一段代码,我似乎无法弄清楚它是如何工作的。
我正在尝试将未经身份验证的用户重定向自定义为登录页面。因此,当用户尝试访问受保护的页面时,laravel会将用户重定向到登录页面。我试图在这种情况下显示Javascript toastr消息。
我所做的是在unauthenticated
课程中自定义App\Exceptions\Handler.php
方法,如下所示:
protected function unauthenticated($request, AuthenticationException $exception)
{
if ($request->expectsJson()) {
return response()->json(['error' => 'Unauthenticated.'], 401);
}
//dd($request);
return redirect()->guest('login')->withError('You are not logged in or Your session has expired');
}
请注意,我错过了s
功能中的withError
。在我的刀片文件中,我显示的是toastr通知,如下所示:
<script>
@if(Session::has('error'))
toastr.error("{{Session::get('error')}}");
@endif
</script>
因此,每当用户因未登录而被重定向到登录页面时,都会显示Java Script toastr消息。但是,我无法弄清楚Session('error')
函数如何填充withError
值。我只能发现Laravel有withErrors
功能,而不是withError
。
试图在没有运气的情况下排除最后几个小时的故障。在这里寻求一些指导。谢谢。顺便说一句,我对Laravel来说很新。
答案 0 :(得分:4)
这是一种“神奇”方法,因为对call
方法前缀的任何调用都将作为闪存数据添加到会话中。因此withError()
会在密钥error
下添加Flash数据; withErrors()
会在密钥errors
下添加Flash数据; withSuccess()
会在success
的密钥下添加Flash数据;等等。