首页 > 解决方案 > 为 foreach() laravel 6 使用子域作为语言指示符提供的参数无效

问题描述

我对 Laravel 和 PHP 很陌生,只是想向我的 Laravel 网站添加额外的语言,使用子域作为语言指标。

但是得到一个错误,上面写着“为 foreach() 提供的参数无效”

我究竟做错了什么?

index.blade.php

   <div class="languages">
              @foreach(config()->get('app.locales') as $code => $lang)
                    <a href="http://{{$code}}.localhost">{{ $lang }}</a>
              @endforeach
   </div>

app/Http/Middleware/Language.php

   public function handle($request, Closure $next){
 
    // get the subdomain if exists
    $urlArray = explode('.', parse_url($request->url(), PHP_URL_HOST));
    if (count($urlArray) < 3){
        return $next($request);
    }
    $subdomain = $urlArray[0];
 
 
 
    // if it's the default language: redirect to URL without subdomain
    if ($subdomain == 'en'){
 
        $baseUrl = str_replace('//en.', '//', $request->url());
        return redirect()->to($baseUrl);
 
    }
 
 
 
    // if it's a valid language, set as locale and set time zone
    if ( array_key_exists($subdomain, config()->get('app.locales')) ){
 
        \App::setLocale($subdomain);
         
        setlocale(LC_TIME, $subdomain);
         
    }
 
 
    return $next($request);
 
}

配置/app.php

'locale' => 'en',
'locales' => [
    'en' => 'English',
    'de' => 'Deutsch',
    'es' => 'Español'
],

标签: phplaravel

解决方案


您是否在 foreach 循环中尝试了“Config::get('app.locales')”而不是“config()->get('app.locales')”?


推荐阅读