0

我要做的就是使用带有语言参数的 URL,这会导致我想向用户显示错误消息。如果我执行注释代码,我会得到错误;

标头可能不包含多个标头,检测到新行。

另一方面,如果我执行未包含在注释中的代码,则会出现错误;

在字符串上使用 () 调用成员函数。

我知道错误的原因。但是,我正在寻找一种解决方案来实现我的目标。

class Authenticate extends Middleware
{
    /**
     * Get the path the user should be redirected to when they are not authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return string|null
     */
    protected function redirectTo($request)
    {
        if (! $request->expectsJson()) {
            // return \Redirect::route('login', app()->getLocale())->with('error', 'Error message');
            return route('login', ['locale' => app()->getLocale()])->with('error', 'Error message');
        }
    }
}
4

2 回答 2

1

您不能调用with()route()方法,因为该route()方法只返回一个字符串并且不负责重定向。

如果您需要在redirectTo()调用该方法后向用户显示错误消息,我认为您可以只将错误消息保留在 LaravelSession

https://laravel.com/docs/8.x/session#interacting-with-the-session

protected function redirectTo($request)
{
    if (! $request->expectsJson()) {

        // This next line keeps the error message in session for you to use on your redirect and then deletes it from session immediately after it has been used
        $request->session()->flash('error', 'Error message!');

        return route('login', ['locale' => app()->getLocale()]);
    }
}

您现在可以像往常一样查看错误消息:

在您的控制器中:

$request->session()->get('error');

或者从您的角度来看:

{{ Session::get('error) }}
于 2020-12-28T10:25:29.443 回答
0

尝试您不能在其中传递 2 个参数redirect()接受 url 不是路由名称

return redirect()->route('login', ['locale' => app()->getLocale()])->with('error', 'Error message'); 
于 2020-12-28T10:40:27.797 回答