首页 > 解决方案 > Laravel:如何在 404 的情况下获取 url 前缀

问题描述

RouteServiceProvider::mapWebRoutes我添加某个前缀(在这种特定情况下为“语言环境”):

protected function mapWebRoutes(string $prefix = ''):void {
    Route::prefix($prefix)
        ->middleware('web')
        ->namespace($this->namespace)
        ->group(base_path('routes/web.php'));
}

稍后在一些刀片模板中,我想获得这个前缀:

    $currentRoute = Route::current();
    $prefix = ($currentRoute) ? $currentRoute->getPrefix() : '';

这一切都很好,直到我转到一些不存在的页面并获得 404(如https://www.somedomain.com/nl/some-non-existing-page)。前缀已经正确确定(因为mapWebRoutes已经执行),但Route::current()现在是空的,所以我不能调用getPrefix()它。有没有办法仍然从 Laravel 获取前缀?符合以下要求的东西Route::prefix()是最好的。

当然,我可以将前缀存储在我自己的某个全局变量中,以防万一我们遇到 404 但我宁愿从 Laravel 获取前缀,因为它应该知道那个时候的值。

标签: laravelroutes

解决方案


推荐阅读