php - 为 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'
],
解决方案
您是否在 foreach 循环中尝试了“Config::get('app.locales')”而不是“config()->get('app.locales')”?
推荐阅读
- react-native - Expo获取设备本地IP地址
- c# - 发布后视觉样式在 .NET 5.0 应用程序中不起作用
- javascript - 如何在 vuejs 的 v-for 循环中自动更新 v-bind 值?
- jxbrowser - 无法在浏览器中使用 javascipt
- javascript - 如何动态输入另一个数字而不是零?
- xml - 在 Linux 上使用 PowerShell 持久化 CSV 数据的方法?
- python - 不能多次录音
- angular - 在角度单元测试中模拟 HttpClient 并返回 observable 的正确方法是什么?
- react-native - 有没有办法在 React Native Navigation 中导航后停止重新渲染?
- android - 如何在 Flutter 中将事件从一个有状态的小部件广播到另一个