经过几个小时的研究,我最终自己创造了一个解决方案,它的工作,但我想你会笑。
有人有更好的主意吗?
@foreach(localization()->getSupportedLocales() as $key => $locale)
<li class="nav-item lang">
<a class="{{ (app()->getLocale() == $key) ? 'active' : '' }}" href=
"@php
$url = url()->full();
$url = explode("/", $url);
$newUrl = '';
$first = reset( $url );
foreach($url as $urlKey => $value)
{
$slash = '/';
if($urlKey == 0)
$slash = '/';
else
$slash = '/';
if($urlKey == 3)
$url[$urlKey] = $key;
if( !next( $url ) && $value != $first) {
$slash = '';
}
$newUrl .= $url[$urlKey].$slash;
}
echo($newUrl);
@endphp">{{ strtoupper($key) }}</a>
</li>
@endforeach
由于我知道$locale变量总是位于url的第三个斜杠处,所以我很喜欢使用explode,并且得到了预期的结果,即一个变量url,其参数的随机数取决于当前路由。
但我觉得你会笑......对吧?
我试过这个代码,但是我需要:
1 -关于创建此函数的位置的建议
2 -一个更好的想法,以达到同样的结果?
提前谢谢大家!
1条答案
按热度按时间xqnpmsa81#
为路线添加名称如何,例如:
然后添加locale的值,如果您想使用该路由:
因此这里的关键角色是route()帮助器,因为您可以将上的路由名称作为第一个参数传递,然后将路由中{}的值作为第二个参数传递。