Laravel url之前在页面重新加载后返回相同的页面

时间:2017-08-18 16:50:43

标签: laravel laravel-5

我试图通过几种方法访问Laravel 5.3 Homestead上的上一个URL,但是所有的时候我在第一次请求时都得到了正确的上一页,然后在刷新页面后我得到了相同的页面。

我在访问页面之前使用中间件来检查语言

URL::previous();
// or
back()->getTargetUrl();

语言中间件

    public function handle($request, Closure $next, $guard = null) {
    $locale = $request->locale;
    $segments = $request->segments();
    $lang_sess = $request->session()->get('language');

    if (!array_key_exists($locale, Config::get('app.locales'))) :
        if (count($segments) > 1):
            $segments[0] = ($lang_sess == "") ? Config::get('app.fallback_locale') : $lang_sess;
            $re_to = implode('/', $segments);
        else:
            $locale = $request->session()->get('language', 'en');
            $re_to = "/$locale/" . implode('/', $segments);
        endif;
        return Redirect::to($re_to);
    endif;
    $request->session()->put('language', $locale);
    App::setLocale($locale);
    return $next($request);
}

[解决]

因为我仍然在开发我的网络应用程序,所以我没有通过一个' href'链接,我是通过复制输入它并将URL粘贴到浏览器中,这会导致重新加载页面后更改URL :: previous ..

案件结束,感谢所有回复并给予关注的人。

2 个答案:

答案 0 :(得分:1)

如果您从A转到页面B。您的上一页将是B。但是,如果您刷新页面,那么您将从A转到页面A

我建议在这种情况下使用cookie检查上一页,如果不同的更改cookie,则保持原样。

  $last_page = URL::previous();
  if(Cookie::get("previous_page") == $last_page){
       Cookie::make('previous_page',$last_page, 60);
  }

现在,您可以在中间件

中使用此Cookie值Cookie::get ("previous_page")

未经测试,但这会指导您。

答案 1 :(得分:0)

“之前的网址”存储在会话中。每当您的网址发生变化时,session()->get('_previous')['url']都会更改为之前的网址。

以这种方式做逻辑:

if (url()->current() == url()->previous()) {
    url()->setPreviousUrl('xxx') // or other logic here
}