5

我在 routing.yml 文件中定义了一个路由:

route_name:
    path: "/dashboard#messages/{id}"

但是,当我要求 Symfony 生成该路由时,我得到:

/dashboard%23messages/12345

如何跳过路由生成的编码部分?或者如何#在路径定义中转义字符?

PS:使用(大型)遗留系统,我无法更改网址。

4

3 回答 3

11

可从 Symfony 3.2 获得。

已宣布使用fragment变量的路由组件支持锚点:

$this->get('router')->generate('user_settings', ['_fragment' => 'password']);

将生成一个 url :/user/settings#password

欲了解更多信息,请查看公告

于 2016-07-06T16:01:11.993 回答
2

你不能轻易 - 路线部分无条件编码:

$url = strtr(rawurlencode($url), $this->decodedChars);

参见https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Routing/Generator/UrlGenerator.php#L192

从技术上讲,您可能已经扩展了类类并使用参数UrlGenerator交换它们。router.options.generator_class然后你可以覆盖该doGenerate方法并替换%23-> #

于 2016-04-28T09:42:15.817 回答
1

在树枝上

<a href="{{ path('user_settings', { '_fragment': 'password' }) }}">
于 2019-04-04T12:58:14.507 回答