2016-04-28 41 views
2

我已經定義的路線爲遵循我的routing.yml文件:如何在Symfony路由中使用錨點?

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

但是當我問的Symfony生成的路線,我得到:

/dashboard%23messages/12345 

我怎麼能跳過編碼部分路線生成?或者我怎麼能在路徑定義中跳出# char? PS:使用(大)遺留系統,我不能更改的網址。

回答

3

可從Symfony 3.2獲得。錨杆

支持已經公佈了使用fragment可變路由組件:

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

將產生一個網址:/user/settings#password

欲瞭解更多信息view the announcement

+0

與[KnpMenuBundle](https://github.com/KnpLabs/KnpMenuBundle):'$ node-> addChild('settings',['route'=>'user_settings','routeParameters'=> ['_ fragment'= >'密碼']])' –

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 - >#

+0

我唯一關心的是網址的生成。不是URL處理。 –