Symfony2 route in Anmerkungen mit optionalen Parametern
erstellte ich eine route mit dem optionalen parameter in der Steuerung wie diese:
/**
* League action
*
* @Route("/association/{assoc}/{league}", name="league", requirements={"league" = "\d+"}, defaults={"game" = null})
* @Route("/association/{assoc}/{league}/{game}")
* @Template()
*
* @param $assoc
* @param $league
* @param $game
* @return array
*/
public function leagueAction($assoc, $league, $game)
aber wenn ich versuche eine Verknüpfung zu erstellen, mit diesem Namen der route, der optionale parameter ist entfallen:
{{ path('league', {'assoc': association.short, 'league': league.id, 'game': g.id}) }}
resultierende link ist
/Verein/BVNR/7
Was bin ich?
InformationsquelleAutor Steffen Kamper | 2013-09-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
In den folgenden Definitionen,
beiden Routen sind in Bezug auf Ihr handeln, auf die erste (benannt
"league"
die keine default-parameter und eine zweite Unbenannte (da Sie nicht das name-Attribut), die auch keine default-parameter.Wie zu beheben ...
name
zu deiner zweiten route und nennen es, wie es enthält"game"
parameter."game"
parameter auf Ihre zweite route (Als es nur die einen haben einegame
parameter."How to improve ..."
Teil meiner Antwort).Versuchen, diese ...
Während Sie anrufen sollen
"league_game"
statt"league"
,, Wie Sie zu verbessern ...
Stellen Sie sicher, dass Sie wirklich brauchen, um zu definieren, zwei Routen, da würde ich vorschlagen, halten nur eine route.
Gibt es einen default-Wert für
"game"
in der folgenden definition,Es dann auch für beide Versionen, mit und ohne
"game"
.ommitting erste Weg nicht funktioniert, ich habe versucht, alle Kombinationen.
Sie brauchen nicht zu definieren "Spiel" als Standard-parameter, um Ihre erste route, da Sie nicht enthalten keine "Spiel" - parameter. Dann, Ihre erste route sollte aufgerufen werden, wie folgt: {{ path('Liga', {'assoc': Verein.kurz, 'Liga': die Liga.id}) }}, wobei Liga.id muss passen "\d+" - Einschränkung.
Ahmed - wenn ich ommit standardmäßig auf der ersten route, bekomme ich folgenden Fehler: Controller "...\LigaController::leagueAction()" erfordert, dass Sie einen Wert für "$Spiel" - argument (weil es keinen default-Wert hat, oder weil ein nicht optionales argument hinter dieser). obwohl bei der link-Generierung für die erste route, die ich nicht verwenden Sie den parameter-Spiel.
Ah sorry, du hast Recht, ich habe nicht sehen Ihre Aktion Signatur. Sie müssen einen Wert (Standard oder nicht) für alle Parameter, die von leagueAction.
InformationsquelleAutor Ahmed Siouani