如何扩展UrlGenerator以生成带有斜杠的链接?

时间:2015-10-23 20:50:17

标签: php laravel url laravel-5.1

我已经修改了htaccess文件以强制使用尾部斜杠,并且现在希望Laravel中的任何url生成都自动添加斜杠,这样我们就没有那么多的重定向。

# Force trailing slash.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

然后我创建了一个CustomUrlGenerator类,它扩展了Illuminate \ Routing \ UrlGenerator,我试图覆盖toRoute函数......

protected function toRoute($route, $parameters, $absolute)
{
    $route = parent::toRoute($route, $parameters, $absolute);

    return $route . '/';
}

AppServiceProvider.php中,我添加了以下代码......

$this->app->bind('url', function($app) {
    return new CustomUrlGenerator($app['routes']->getBindings(), request());
});

不幸的是,我认为这会以某种方式破坏应用程序,因为无论何时我尝试使用任何使用此功能的东西,它都找不到路由,可能是因为我在生命周期中设置得太早。

1 个答案:

答案 0 :(得分:0)

根据github中的代码,toRouteprotected,这意味着您无法将其覆盖为public,请按以下方式更改代码:

protected function toRoute($route, $parameters, $absolute)
{
    $route = parent::toRoute($route, $parameters, $absolute);

    return $route . '/';
}