【问题标题】:Laravel: Print the current route, with a different parameterLaravel:使用不同的参数打印当前路线
【发布时间】:2018-06-12 12:35:09
【问题描述】:

考虑 Laravel 5 中的以下路由组:

Route::prefix('{locale}')->group(function () {
    // ... Other routes here
});

嵌套在该路由组中的所有路由都有扩展特定布局的视图。

在这个布局的某个地方,我在我的应用程序中循环了所有可用的语言环境,并放置了链接以更改到这个语言环境。在我看来,打印这些链接的最简单方法是什么,保留当前路由和可能的其他路由参数,但只更改 {locale} 参数?

【问题讨论】:

    标签: php laravel laravel-5 laravel-5.5


    【解决方案1】:

    也许只是键入提示请求并通过控制器将前缀传递到您的视图中并在您的链接中使用它:

    public function ControllerWithLocaleLinks(Request $request)
    {
        $currentLocale = $request->route()->getPrefix();
        return view('locale', compact('currentLocale'));
    }
    

    【讨论】:

    • 请在您的答案中添加一些进一步的解释,以便其他人可以从中学习 - 为什么应该将该语言环境传递给视图?
    【解决方案2】:

    遇到了这个问题,想出了这个:

    app('url')->toRoute(
        request()->route(),
        array_merge(request()->route()->parameters(), ['locale' => $otherLocale]),
        true
    );
    

    你可以把它变成像route这样的助手:

    function current_route($params = [], $absolute = true)
    {
        return app('url')->toRoute(
            request()->route(),
            array_merge(request()->route()->parameters(), $params),
            $absolute
        );
    }
    

    并使用current_route(['locale' => 'sv']) 调用它

    【讨论】:

      猜你喜欢
      • 2017-07-19
      • 2015-12-04
      • 2019-06-21
      • 2021-06-30
      • 2015-10-08
      • 2020-02-03
      • 2013-02-01
      • 1970-01-01
      • 2016-08-03
      相关资源
      最近更新 更多