我一直在使用帮手
应用程序() - >的setLocale(会话('朗'));
但是,我可以更改视图的语言,但错误的语言仍然继续阅读
\ config \ app.php locale => “ES”
这意味着始终显示相同的语言。
我如何动态更改它?
问题是打印错误的局部视图总是以相同的语言打印。
这是我的代码。
\资源\视图\ layout.blade.php
@lang('messages.project')
<ul class="nav navbar-nav navbar-right">
<li><a href="{{ url('lang', ['en']) }}">En</a></li>
<li><a href="{{ url('lang', ['es']) }}">Es</a></li>
</ul>
\应用\ HTTP \ routes.php文件
Route::get('lang/{lang}', 'NotesController@changeLang')->where([ 'lang' => 'en|es']);
Route::group(['middleware' => ['web']], function () {
Route::get('notes', 'NotesController@index');
Route::get('notes/create', 'NotesController@create');
});
\应用\ HTTP \控制器\ NotesController.php
public function changeLang($lang)
{
session(['lang' => $lang]);
return Redirect::back();
}
\应用\ HTTP \中间件\ LangMiddleware.php
public function handle($request, Closure $next)
{
if (!empty(session('lang'))) {
app()->setLocale(session('lang'));
}
return $next($request);
}
\资源\视图\泛音\ errors.blade.php
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
答案 0 :(得分:0)
解决方案是将中间件放在 protected $ middleware = [] 部分的文件 App \ Http \ Kernel.php 中,因为我只是放入了部分&#34;保护$ routeMiddleware&#34;
\App\Http\Middleware\VerifyCsrfToken::class,
\App\Http\Middleware\myNewMiddleware::class,
];