Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为使用子域作为语言指示符的foreach()laravel 6提供的参数无效_Php_Laravel - Fatal编程技术网

Php 为使用子域作为语言指示符的foreach()laravel 6提供的参数无效

Php 为使用子域作为语言指示符的foreach()laravel 6提供的参数无效,php,laravel,Php,Laravel,我对Laravel和PHP非常陌生,只是尝试使用子域作为语言指示器向我的Laravel网站添加额外的语言 但获取一个错误,该错误表示“为foreach()提供的参数无效” 我做错了什么 index.blade.php <div class="languages"> @foreach(config()->get('app.locales') as $code => $lang) &

我对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>
   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);
 
}
'locale' => 'en',
'locales' => [
    'en' => 'English',
    'de' => 'Deutsch',
    'es' => 'Español'
],

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

php artisan tinker
中,执行
Config()->get('app.locales')
。看看它是否在吐出一个数组。您可能只需要一个
php artisan config:clear
来清除配置缓存。是的,它工作了“php artisan config:clear”您救了我一命,非常感谢,所以第6级文档建议如下:
config('app.locales')