如何动态更改laravel 5.1中的错误语言

时间:2017-01-06 16:03:51

标签: php laravel-5.1

我一直在使用帮手

  

应用程序() - >的setLocale(会话('朗'));

但是,我可以更改视图的语言,但错误的语言仍然继续阅读

  

\ config \ app.php locale => “ES”

这意味着始终显示相同的语言。

我如何动态更改它?

enter image description here

问题是打印错误的局部视图总是以相同的语言打印。

这是我的代码。

\资源\视图\ 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>

1 个答案:

答案 0 :(得分:0)

解决方案是将中间件放在 protected $ middleware = [] 部分的文件 App \ Http \ Kernel.php 中,因为我只是放入了部分&#34;保护$ routeMiddleware&#34;

\App\Http\Middleware\VerifyCsrfToken::class,
    \App\Http\Middleware\myNewMiddleware::class,        
];