6 votes

Syntaxe de l'itinéraire de jeu pour ignorer une partie du slug

Ce que nous voulons, c'est essentiellement ça :

/foo/*                 controllers.FooController.foo

Cependant, cela ne fonctionne pas.

Nous avons trouvé la solution de contournement suivante :

/foo/*ignore           controllers.FooController.foo(ignore)

Mais cela rend le code de la méthode controllers.FooController.foo légèrement laid. Existe-t-il une meilleure façon de procéder ?

2voto

andy petrella Points 3045

En regardant le code sur ici le routeur n'est pas en mesure de traiter la partie "slug" sans spécifier un nom de domaine. identifier ... le combinateur de l'analyseur syntaxique ne le déclare pas comme optionnel, et la fonction map ( ^^ ) l'utilise clairement tel quel.

Cela pourrait être une bonne demande de fonctionnalité si cela n'induisait pas d'autres problèmes où un motif cache toutes les autres routes parce qu'il est défini plus haut dans le fichier (ou même pire, inclus).

Et on dirait que ça a été fait exprès si on regarde ici nous pouvons comprendre que le paramètre dynamique ne peut pas être assigné à une valeur par défaut -- en effet, dans ce cas nous tomberons dans le cas que je viens de mentionner :-/.

Mon premier conseil serait de vous dire d'utiliser ignore comme un Option[String] et la définition de l'action pour la définir comme None (plutôt qu'un String parce que c'est plus expressif). Mon deuxième point serait de vous inciter à vous demander si ce cas est vraiment pertinent, car il est source d'erreurs et pourrait cacher d'autres problèmes.

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