我尝试通过多种方法访问 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 在之后发生更改重新加载页面..
案件已结,感谢所有回复和关注的人。
最佳答案
“以前的 URL”存储在 session 中。每次 URL 更改时,session()->get('_previous')['url']
都会更改为以前的 url。
这样进行逻辑:
if (url()->current() == url()->previous()) {
url()->setPreviousUrl('xxx') // or other logic here
}
关于Laravel url 先前在页面重新加载后返回同一页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45761477/