所以我已经为我的应用程序实现了语言切换,在大多数页面上它都运行良好,但是有一个页面切换语言返回 404。当我切换语言时,路由看起来像这样,例如密码/语言/en,然后是 404 错误,但是如果我从 url 选项卡中删除密码,那么我会在切换语言的情况下被重定向回来。
我的翻译放在 resources/lang/language_name
语言切换路径:
Route::get('lang/{locale}', 'Localization\LocalizationController@index');
切换时抛出 404 的路由(来自 Laravel 的 auth 层):
$this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm');
控制器:
public function index($locale)
{
App::setLocale($locale);
//storing the locale in session to get it back in the middleware
session()->put('locale', $locale);
return redirect()->back();
}
中间件/Localization.php:
public function handle($request, Closure $next)
{
if (session()->has('locale')) {
App::setLocale(session()->get('locale'));
}
return $next($request);
}
我不知道在哪里看,也找不到任何人遇到过这个问题。
编辑 如果我将密码添加到切换路线:
Route::get('password/lang/{locale}', 'Localization\LocalizationController@index');
然后它可以工作,但显然其他路线不会,我的问题是我是否像这样离开它,2条单独的路线:
Route::get('/lang/{locale}', 'Localization\LocalizationController@index');
Route::get('password/lang/{locale}', 'Localization\LocalizationController@index');
还是这里有更好的选择?