Laravel 5.x:如何在视图/刀片中替换URL中的区域设置?

时间:2017-01-10 21:52:05

标签: laravel url laravel-5 locale

我的观点中有一个刀片,看起来像这样:

@if (App::getLocale() == 'de')
    <a href="/en/dashboard">
        <i class="fa fa-language">ENGLISH</i>
    </a>
@elseif (App::getLocale() == 'en')
    <a href="/de/dashboard">
        <i class="fa fa-language">GERMAN</i>
    </a>
@endif

这会创建一个按钮,允许我切换到另一种语言。

嗯......网址也可以是其中之一:

/en/settings
/en/logbook

我想,按钮会重定向到同一页面,但是使用不同的语言:

  • / en / dashboard - &gt; / DE /仪表板
  • / en / settings - &gt; / DE /设置
  • / en / logbook - &gt; / DE /日志

使用{{ Request::url() }}我能够获取当前网址,但现在使用此网址的最佳方式/解决方案只是使用不同的区域设置?

{{ Request::url() }}例如包含/en/dashboard,我现在需要/de/dashboard

是否存在任何Laravel功能,或者我是否需要使用PHP编写此代码...刀片?

2 个答案:

答案 0 :(得分:3)

我在大约2年前写过这个小帮手功能。当您传递$locale变量并将其添加到网址的第一个分段时,它会很有效。

 public static function getLocaleChangerURL($locale){
    $uri = $_SERVER['REQUEST_URI'];
    $uri = explode('/', $uri);
    unset($uri[0]);
    unset($uri[1]);
    $url = url($locale);
    foreach($uri as $u){
        $url .= '/'.$u;
    }
    return $url;
}

答案 1 :(得分:2)

我更喜欢这种方式。

public static function getLocaleChangerURL($locale)
{
    $uri = request()->segments();

    $uri[0] = $locale;

    return implode($uri, '/');
}