6 votes

Comment utiliser des ancres dans le routage Symfony?

J'ai défini une route comme suit dans mon fichier routing.yml :

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

Cependant, lorsque je demande à Symfony de générer cette route, j'obtiens :

/dashboard%23messages/12345

Comment puis-je éviter la partie encodage de la génération de la route ? Ou comment puis-je échapper au caractère # dans la définition du chemin ?

PS : Travaillant avec un (gros) système hérité, je ne peux pas changer les urls.

11voto

i.am.michiel Points 5085

Disponible à partir de Symfony 3.2.

Le support des ancres a été annoncé pour le composant de routage en utilisant la variable fragment :

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

Generera une URL : /user/settings#password

Pour plus d'informations, consultez l'annonce.

2voto

zerkms Points 105994

Vous ne pouvez pas facilement - les parties de la route sont encodées de manière inconditionnelle :

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

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

Techniquement, vous pourriez avoir étendu la classe UrlGenerator et les échanger en utilisant le paramètre router.options.generator_class. Ensuite, vous pourriez remplacer la méthode doGenerate et remplacer %23 -> #.

2voto

Kaizoku Gambare Points 974

En brindille

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X