laravel 5.4 session 应用程序 setlocale 不工作
laravel 5.4 session app setlocale not working
在我的应用程序中,我尝试像这样更新应用程序文件中的区域设置:在区域设置中间件文件中:
public function handle($request, Closure $next)
{
if(Session::has('locale'))
{
$locale = Session::get('locale');
App::setLocale($locale);
}
return $next($request);
}
但是,它不起作用
我已经注册Kernel.php
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\LanguageChange::class,
];
然后我创建路线网
Route::get('lang/{locale}', function ($locale) {
//App::setLocale($locale);
Session::put('locale', $locale);
return Redirect::back();
});
我的blade
<li class="dropdown">
<a class=" dropdown-toggle" id="dropdownLang"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
@if(\Illuminate\Support\Facades\Session::get('locale') == "th")
THAI
@elseif(\Illuminate\Support\Facades\Session::get('locale') == "en")
English
@endif
<span class="caret"></span></a>
<ul class="dropdown-menu" aria-labelledby="dropdownLang">
<li>
<a href="{{url('lang/en')}}">
ภาษาอังกฤษ (English)
</a>
</li>
<li>
<a href="{{url('lang/th')}}">
ภาษาไทย (Thai)
</a>
</li>
</ul>
</li>
我认为你应该在 'StartSession' 中间件之后包含你的中间件。
protected $middlewareGroups = [
...
'web' => [
...
\Illuminate\Session\Middleware\StartSession::class,
\App\Http\Middleware\Locale::class,
...
],
...
];
点击此处查看 laravel 5.7 https://gist.github.com/ricardocanelas/08bec2e801226af4fe8e3180a8de466d
中的示例
在我的应用程序中,我尝试像这样更新应用程序文件中的区域设置:在区域设置中间件文件中:
public function handle($request, Closure $next)
{
if(Session::has('locale'))
{
$locale = Session::get('locale');
App::setLocale($locale);
}
return $next($request);
}
但是,它不起作用
我已经注册Kernel.php
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\LanguageChange::class,
];
然后我创建路线网
Route::get('lang/{locale}', function ($locale) {
//App::setLocale($locale);
Session::put('locale', $locale);
return Redirect::back();
});
我的blade
<li class="dropdown">
<a class=" dropdown-toggle" id="dropdownLang"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
@if(\Illuminate\Support\Facades\Session::get('locale') == "th")
THAI
@elseif(\Illuminate\Support\Facades\Session::get('locale') == "en")
English
@endif
<span class="caret"></span></a>
<ul class="dropdown-menu" aria-labelledby="dropdownLang">
<li>
<a href="{{url('lang/en')}}">
ภาษาอังกฤษ (English)
</a>
</li>
<li>
<a href="{{url('lang/th')}}">
ภาษาไทย (Thai)
</a>
</li>
</ul>
</li>
我认为你应该在 'StartSession' 中间件之后包含你的中间件。
protected $middlewareGroups = [
...
'web' => [
...
\Illuminate\Session\Middleware\StartSession::class,
\App\Http\Middleware\Locale::class,
...
],
...
];
点击此处查看 laravel 5.7 https://gist.github.com/ricardocanelas/08bec2e801226af4fe8e3180a8de466d
中的示例