Files
car_info/plugin/admin/app/controller/LanguageController.php
T
2025-05-06 17:16:37 +08:00

78 lines
2.2 KiB
PHP

<?php
namespace plugin\admin\app\controller;
use support\Request;
use support\Response;
use support\Log;
class LanguageController
{
/**
* 不需要登录的方法
* @var string[]
*/
protected $noNeedLogin = ['switch'];
/**
* 不需要鉴权的方法
* @var string[]
*/
protected $noNeedAuth = ['switch'];
/**
* 切换语言
* @param Request $request
* @return Response
*/
public function switch(Request $request): Response
{
try {
$lang = $request->post('lang');
Log::info('Language switch request received', [
'lang' => $lang,
'method' => $request->method(),
'headers' => $request->header(),
'input' => $request->all()
]);
if (!$lang) {
Log::warning('No language specified in request');
return json(['code' => 1, 'msg' => '未指定语言']);
}
if (!in_array($lang, ['zh-cn', 'en', 'ru', 'ar'])) {
Log::warning('Unsupported language', ['lang' => $lang]);
return json(['code' => 1, 'msg' => '不支持的语言']);
}
// 设置语言到session
session(['lang' => $lang]);
Log::info('Language set to session', ['lang' => $lang]);
// 获取当前页面的URL
$referer = $request->header('referer');
if (!$referer) {
$referer = '/';
}
Log::info('Redirect URL', ['referer' => $referer]);
return json([
'code' => 0,
'msg' => '切换成功',
'data' => [
'redirect' => $referer
]
]);
} catch (\Exception $e) {
Log::error('Language switch error', [
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString()
]);
return json([
'code' => 1,
'msg' => '切换语言失败: ' . $e->getMessage()
]);
}
}
}