2016-01-02 22 views
7

動作しないのApp ::、私はこのようなアプリのファイルにロケールを更新しようとしている:ロケールミドルウェアファイルで :Laravel:あるsetLocale私はlaravel 5.1を使用してい

... 
public function handle($request, Closure $next) 
    {  
     if(Session::has('locale')) 
     { 
      $lang = Session::get('locale');    
      App::setLocale($lang);   
     } 

     return $next($request); 
    } 

これについては任意のアイデアを??

+1

ここでは再帰問題がありますが、パラメータ '$ next'は何を保持していますか? – ViRuSTriNiTy

+0

"doesnt work"の症状は何ですか?セッションでロケールが設定されていますか? –

+0

はいセッション:: get( 'locale'):/ – BKF

答えて

6

最終的に2時間後> < '!! ミドルウェアのロケールクラスのラインの場所です。 私はこのように最後の行でそれを設定します。

... 
    ... 
    \App\Http\Middleware\VerifyCsrfToken::class, 
     \App\Http\Middleware\Locale::class,   
    ]; 

とすべてが罰金や作業です!おかげで私はこのように、ミドルウェアのコンストラクタメソッドにロケールを設定していますすべての:))))

+0

私は同じ問題があります。ラインプレイスは私の最初のアイテムの1つでしたが、まだ動作しません! – ivahidmontazer

2

唯一のソリューションについて:♥♥♥と2時間かけしようとして

<?php 

namespace App\Http\Middleware; 

use Closure; 
use Illuminate\Contracts\Foundation\Application; 
use Illuminate\Http\Request; 

class Localization 
{ 

    protected $app; 

    public function __construct(Application $app, Request $request) 
    { 
     if($locale = $request->header('Content-Language')){ 
      if(in_array($locale, ['en', 'fa'])){ 
       $app->setLocale($locale); 
      } 
     } 
    } 

    /** 
    * Handle an incoming request. 
    * 
    * @param Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     return $next($request); 
    } 
} 

0

おかげで、

:)私は同じ問題を抱えていたし、溶液を保護$ミドルウェア= []

のセクションで のApp \のHttp \ Kernel.phpファイルにミドルウェアを入れました
\App\Http\Middleware\VerifyCsrfToken::class, 
    \App\Http\Middleware\myNewMiddleware::class,   
]; 
+1

... 1年前の回答です。ここで回答を複製しないでください。 –

関連する問題