Kürzlich habe ich von Laravel 5.3
auf Laravel 5.2
aktualisiert.Laravel - Lokalisierung in api Anfrage
In diesem habe ich zwei separate route
Dateien für web
bzw. api
im Verzeichnis routes definiert.
Ich habe ein multilingual
Portal. Ich biete die Möglichkeit, die Sprache zu ändern. Dafür verwende ich localization
Middleware. Bitte beachten Sie meinen Code unten:
Localization.php:
class Localization {
public function handle($request, Closure $next, $guard=null){
if(!Auth::guard($guard)->guest()){
if (Session::has('current_locale')) {
$locale = Session::get('current_locale');
}
else {
$locale = Auth::guard($guard)->user()->getLocale();
Session::set('current_locale', $locale);
}
App::setLocale($locale);
}
return $next($request);
}
}
Die Routen/web.php ist als:
Route::group(['middleware' => ['web']], function(){
Route::group(['middleware' => ['localization:web']], function() {
//Some web routes here
});
});
Und Routen/api.php ist wie:
Route::group(['prefix' => 'api/service/v1', 'middleware' => ['api']], function(){
Route::group(['middleware' => ['auth:api','localization:api']], function() {
//Some api routes here
});
});
config/Auth.php ist als:
return [
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
]
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
]
],
'passwords' => [
'users' => [
'provider' => 'users',
'email' => 'auth.emails.password',
'table' => 'password_resets',
'expire' => 60,
]
]
];
auf andere Sprache wählen, ich die gewählte Sprache in einem session
bin Speicherung und ich verwende es für die nachfolgenden Anforderungen der App Sprache einzustellen.
Aber das Problem ist, ich verwende Ajax
Anfragen, um die Daten mit APIs
zu erhalten. Und in dem die Wache api
ist in localization
Middleware eingestellt, daher kann ich nicht auf die Session
zugreifen, deshalb bin ich nicht in der Lage, die mehrsprachigen Daten aus der Datenbank zu bekommen.
Irgendeine Lösung? Wie behebe ich das?