2016-01-02 6 views
7

Я использую Laravel 5,1, я пытаюсь обновить локали в приложении файл, как это: В Locale Middleware файле:Laravel: App :: Setlocale не работает

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

     return $next($request); 
    } 

Любая идея об этом ??

+1

У вас проблема с рекурсией здесь, что делает параметр '$ next'? – ViRuSTriNiTy

+0

Каковы симптомы «не работает»? вы уверены, что языковой стандарт установлен в сеансе? –

+0

Да, я могу увидеть его значение, используя: Session :: get ('locale'):/ – BKF

ответ

6

Оооочень, наконец, через два часа> < '!! Это место линии языкового класса в промежуточном программном обеспечении .- '!!! я поставил его в последней строке, как это:

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

и все отлично и работает! спасибо всем вам :))))

+0

У меня такой же выпуск. Линейное место было для меня одним из первых, но оно пока не работает! – ivahidmontazer

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

С ♥♥♥ и более 2 часов, пытаясь!

0

Спасибо,

:) У меня была такая же проблема, и решение было поставить промежуточное программное обеспечение в файле App \ Http \ Kernel.php в разделе защищаемого $ промежуточного слоя = []

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

... как ответил год назад. Не повторяйте ответы здесь. –

Смежные вопросы