5

routing.yml ファイルで次のようにルートを定義しました。

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

ただし、Symfony にそのルートを生成するように依頼すると、次のようになります。

/dashboard%23messages/12345

ルート生成のエンコード部分をスキップするにはどうすればよいですか? #または、パス定義で charをエスケープするにはどうすればよいですか?

PS : (大規模な) レガシー システムで作業しているため、URLを変更できません。

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 に答える