[英]How can I change the language of errors in laravel 5.1 dynamically
我一直在使用助手
app()-> setLocale(session('lang'));
但是,我可以更改视图的语言,但是错误的语言仍然继续读取
\\ config \\ app.php语言环境=>'es'
这意味着始终显示相同的语言。
如何动态地更改它?
问题在于,打印错误的局部视图始终以相同的语言打印。
这是我的代码。
\\ resources \\ views \\ 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>
\\ app \\ 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');
});
\\ app \\ Http \\ Controllers \\ NotesController.php
public function changeLang($lang)
{
session(['lang' => $lang]);
return Redirect::back();
}
\\ app \\ Http \\ Middleware \\ LangMiddleware.php
public function handle($request, Closure $next)
{
if (!empty(session('lang'))) {
app()->setLocale(session('lang'));
}
return $next($request);
}
\\ resources \\ views \\ partials \\ errors.blade.php
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
解决方案将中间件放在受保护的$ middleware = []部分的App \\ Http \\ Kernel.php文件中,因为我只是将其放在了“ protected $ routeMiddleware”部分
\App\Http\Middleware\VerifyCsrfToken::class,
\App\Http\Middleware\myNewMiddleware::class,
];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.