gpt4 book ai didi

Laravel - api 请求中的本地化

转载 作者:行者123 更新时间:2023-12-03 19:39:18 24 4
gpt4 key购买 nike

最近,我从Laravel 5.3升级了至 Laravel 5.2 .

在此,我定义了两个单独的 route web 的文件和 api分别在路由目录中。

我有一个 multilingual门户网站。我正在提供更改语言的选项。为此,我正在使用 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);
}
}

路线/web.php 是这样的:
Route::group(['middleware' => ['web']], function(){
Route::group(['middleware' => ['localization:web']], function () {
//Some web routes here
});
});

路线/api.php 是这样的:
Route::group(['prefix' => 'api/service/v1', 'middleware' => ['api']], function(){
Route::group(['middleware' => ['auth:api','localization:api']], function() {
//Some api routes here
});
});

配置/auth.php 是这样的:
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,
]
]
];

在选择不同的语言时,我将所选语言存储在 session 中。我在后续请求中使用它来设置应用程序语言。

但是,问题是,我正在使用 Ajax请求使用 APIs 获取数据.而其中的守卫 api设置在 localization中间件,因此我无法访问 Session这就是为什么我无法从数据库中获取多语言数据的原因。

有什么解决办法吗?如何解决这个问题?

最佳答案

我已经通过更新 $middleware 自己解决了这个问题app/Http/Kernal.php 中的数组作为:

protected $middleware = [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
'Barryvdh\Cors\HandleCors',
];

希望这可以帮助某人。

关于Laravel - api 请求中的本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41979868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com