【发布时间】:2020-01-28 09:06:08
【问题描述】:
我有一个简单的问题。
这是我的代码
- 路线
Route::post('change-language', 'LanguageController@changeLanguage')->name('changeLanguage')->middleware('localization');
- 本地化中间件
public function handle($request, Closure $next)
{
if (session()->has('locale') && \App\Language::get('lang')->pluck('lang')->contains(Route::getFacadeRoot()->current()->parameter('locale'))) {
$lang = Route::getFacadeRoot()->current()->parameter('locale');
App::setLocale($lang);
session()->put('locale', $lang);
return $next($request);
}elseif(session()->has('locale') && !\App\Language::get('lang')->pluck('lang')->contains(Route::getFacadeRoot()->current()->parameter('locale'))){
$lang = 'id';
App::setLocale($lang);
session()->put('locale', $lang);
return $next($request);
}
}
- 更改语言功能
public function changeLanguage(Request $req)
{
return redirect()->back();
}
正如您在本地化中间件中看到的,我根据路由 url 更改语言。当我更改 changeLocalization 的返回值时,return redirect($req->lang) 就像一个魅力。但我想重定向回以前的路线。是否可以在 back() 函数中添加或覆盖路由参数?
【问题讨论】:
-
只需调用
return back();,它将直接指向会话中的预期网址 -
你可以使用
back()而不是return redirect()->route('your route name to which you want to redirect back') -
谢谢回复,返回上一条路线,但不是改语言
-
或者你也可以使用
return redirect()->back()->with(your parameter you want to pass) -
你是这个意思吗?
return redirect()->back()->with($req->lang);
标签: php laravel routes localization