我试图通过几种方法访问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 ..
案件结束,感谢所有回复并给予关注的人。
答案 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
}