如何在 Symfony 路由中使用锚点?
How to use anchors in Symfony routing?
我在 routing.yml 文件中定义了一条路线:
route_name:
path: "/dashboard#messages/{id}"
然而,当我要求 Symfony 生成该路由时,我得到:
/dashboard%23messages/12345
如何跳过路由生成的编码部分?或者如何转义路径定义中的 #
字符?
PS : 使用(大)遗留系统,我无法更改 url。
你不能轻易 - 路线部分无条件编码:
$url = strtr(rawurlencode($url), $this->decodedChars);
从技术上讲,您可能已经扩展了 class UrlGenerator
class 并使用 router.options.generator_class
参数交换它们。然后你可以覆盖 doGenerate
方法并替换 %23
-> #
.
可从 Symfony 3.2 获得。
已宣布使用 fragment
变量为路由组件支持锚点:
$this->get('router')->generate('user_settings', ['_fragment' => 'password']);
将生成一个 url : /user/settings#password
在树枝上
<a href="{{ path('user_settings', { '_fragment': 'password' }) }}">
我在 routing.yml 文件中定义了一条路线:
route_name:
path: "/dashboard#messages/{id}"
然而,当我要求 Symfony 生成该路由时,我得到:
/dashboard%23messages/12345
如何跳过路由生成的编码部分?或者如何转义路径定义中的 #
字符?
PS : 使用(大)遗留系统,我无法更改 url。
你不能轻易 - 路线部分无条件编码:
$url = strtr(rawurlencode($url), $this->decodedChars);
从技术上讲,您可能已经扩展了 class UrlGenerator
class 并使用 router.options.generator_class
参数交换它们。然后你可以覆盖 doGenerate
方法并替换 %23
-> #
.
可从 Symfony 3.2 获得。
已宣布使用 fragment
变量为路由组件支持锚点:
$this->get('router')->generate('user_settings', ['_fragment' => 'password']);
将生成一个 url : /user/settings#password
在树枝上
<a href="{{ path('user_settings', { '_fragment': 'password' }) }}">