Symfony2 de Routage: les Deux paramètres facultatifs - au moins un
Je suis en train de mettre en place des itinéraires dans symfony2 pour le motif suivant:
www.myaweseomesite.com/payment/customer/{customernumber}/{invoicenumber}
Les deux paramètres sont facultatifs - donc les scénarios suivants doivent travailler:
www.myaweseomesite.com/payment/customer/{customerNumber}/{invoiceNumber}
www.myaweseomesite.com/payment/customer/{customerNumber}
www.myaweseomesite.com/payment/customer/{invoiceNumber}
Je mettre en place mon routage.yml selon la symfony2 doc.
payment_route:
pattern: /payment/customer/{customerNumber}/{invoiceNumber}
defaults: { _controller: PaymentBundle:Index:payment, customerNumber: null, invoiceNumber: null }
requirements:
_method: GET
Cela fonctionne très bien jusqu'à présent. Le problème est que, si les deux paramètres sont manquants ou vide, la route ne doit pas travailler. Donc
www.myaweseomesite.com/payment/customer/
ne devraient pas travailler. Est-il possible de faire cela avec Symfony2?
Comment les params? Ont-ils la longueur de la spécificité ou juste des chiffres ? Juste des lettres? Des lettres et des chiffres? Parce que si ils sont à la fois de toute la longueur avec uniquement des chiffres, c'est impossible, puisque vous ne pouvez pas savoir qui est qui.
customerNumber est un chiffre, invoiceNumber est une chaîne de caractères
customerNumber est un chiffre, invoiceNumber est une chaîne de caractères
OriginalL'auteur marty | 2013-03-08
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le définir en deux itinéraires pour être sûr d'avoir seulement 1 barre oblique.
Veuillez noter que vous pourriez avoir à modifier la regex définir les paramètres en fonction de vos besoins précis. Vous pouvez regardez cette. Complexe regex d'être entouré par
"
. (Exemplemyvar : "[A-Z]{2,20}"
)content d'avoir pu aider! Pour donner un peu plus d'info, la première voie correspond à vos 2 premiers types. Et la deuxième, le troisième type. (oups j'ai oublié d'enlevé le
customerNumber: null
à partir de la première route, sinon il acceptera la route sans paramètres. J'ai mis à jour pour refléter le fait que!)OriginalL'auteur Hugo Dozois
D'élaborer sur @Hugo réponse, veuillez trouver ci-dessous la config avec des annotations :
OriginalL'auteur Sébastien
Selon la documentation:
http://symfony.com/doc/current/routing/optional_placeholders.html
définir une valeur par défaut pour les paramètres facultatifs dans les annotations dans le contrôleur:
De cette façon, vous avez seulement besoin d'une route dans le routage.yml
OriginalL'auteur Antonis Charalambous