2016-01-02 31 views
7

Ben laravel 5.1, böyle uygulama dosyasında yerel güncellemeye çalışıyorum kullanıyorum: Yerel Middleware dosyasında :laravel: App :: setLocale çalışmıyor

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

     return $next($request); 
    } 

bu konuda herhangi bir fikir ??

+1

Burada bir yineleme sorunu var, '$ next' parametresi ne tutuyor? – ViRuSTriNiTy

+0

"çalışmıyor" belirtileri nelerdir? Lokalin oturumda belirlendiğinden emin misin? –

+0

Evet Değerini kullanarak görebiliyorum: Oturum :: get ('locale'):/ – BKF

cevap

6

Sonunda iki saat sonra Oooof> < '!! Bu, middleware sınıfındaki yer sınıfının satır yeridir.

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

ve tüm ince ve çalışır durumda: böyle son satırında ayarlayın! teşekkürler hepiniz için :))))

+0

Aynı sorun var. Hat yeri benim için ilk kalemlerden biriydi, ama henüz çalışmıyor! – ivahidmontazer

2

böyle, orta tesisat yapıcı yönteminde yerel kuruldu bulunan tek çözüm:

<?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); 
    } 
} 

ile ♥♥♥ ve çalışırken saat 2 üzerinde!

0

sayesinde

:) Ben de aynı sorun vardı ve çözüm dosyasında App \ Http korumalı $ katman bölümünde Kernel.php = \ []

ortakatmanını konulmuştur
\App\Http\Middleware\VerifyCsrfToken::class, 
    \App\Http\Middleware\myNewMiddleware::class,   
]; 
+1

... bir yıl önce cevaplandı. Cevapları burada tekrarlama. –

İlgili konular