Laravel Настройка языка пользователя

У меня много контроллеров, и я хочу установить этот код во всем этом (фактически во всем проекте), как я могу это сделать?

if( !empty(Input::get('lan')) ){
Auth::user()->language = Input::get('lan');
App::setLocale( Auth::user()->language );
}else{
App::setLocale( Auth::user()->language );
}

2

Решение

Ты можешь использовать Промежуточное ПО Laravel для этого. Промежуточное это уровень кода, который оборачивает обработку запроса и может выполнять дополнительный код до и / или после обработки запроса.

Во-первых, вам нужен ваш класс промежуточного программного обеспечения. Нужно иметь один метод с именем справиться() это сделает желаемую логику. В вашем случае это может выглядеть так:

<?php namespace App\Http\Middleware;

use Auth;
use App;

class SetLang {
public function handle($request, Closure $next) {
if(empty($request->has('lan'))) {
if (Auth::user()) {
Auth::user()->language = $request->input('lan');
Auth::user()->save(); // this will do database UPDATE only when language was changed
}
App::setLocale($request->input('lan'));
} else if (Auth::user()) {
App::setLocale(Auth::user()->language);
}

return $next($request);
}
}

Затем зарегистрируйте промежуточное программное обеспечение в своем App \ Http \ Kernel класс, чтобы он выполнялся для каждого запроса:

protected protected $middleware = [
//here go the other middleware classes
'App\Http\Middleware\SetLang',
];

Вы можете найти больше информации о Промежуточное в документах здесь: http://laravel.com/docs/master/middleware

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]