You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel应用多语言切换中间件报错:Undefined array key 'default_language'

解决Laravel多语言切换中间件「Undefined array key 'default_language'」错误

错误原因

getSuperAdminSettingValue()返回的数组中不存在default_language键,或者函数返回结果不符合预期的数组结构;另外直接访问->value也存在风险——如果default_language存在但不是对象,会触发新的错误。

修复后的代码

public function handle(Request $request, Closure $next): Response
{
    $localeLanguage = \Session::get('languageChangeName');
    $settings = getSuperAdminSettingValue();
    
    // 先判断数组键是否存在,再安全获取value属性
    $defaultLanguage = isset($settings['default_language']) ? $settings['default_language']->value : null;
    
    if (!isset($localeLanguage)) {
        // 用空合并运算符简化默认值处理
        \App::setLocale($defaultLanguage ?: 'en');
    } else {
        \App::setLocale($localeLanguage);
    }

    return $next($request);
}

额外排查建议

  • 临时在代码中添加dd($settings),查看getSuperAdminSettingValue()的返回结构,确认是否包含default_language键。
  • 检查后台超级管理员设置页面,确保default_language选项已正确配置且value字段有有效值。
  • 优化getSuperAdminSettingValue()函数,让它在没有数据时返回默认数组(比如return [];),避免返回非数组类型导致报错。

内容的提问来源于stack exchange,提问作者Manunyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 20:12:04