[英]Laravel url previous return same page after page reload
我尝试通过几种方法访问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 ..
案件结案,感谢所有回复并给予关注的人。
如果你从B
转到第A
页。 您的上一页将是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")
没有测试,但这会指导你。
“以前的网址”存储在session()->get('_previous')['url']
每当您的网址发生变化时, session()->get('_previous')['url']
都会更改为之前的网址。
以这种方式做逻辑:
if (url()->current() == url()->previous()) {
url()->setPreviousUrl('xxx') // or other logic here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.