Routing in Symfony2: optionale parameter en vier urls für eine route
In meiner Symfony2-Anwendung möchte ich die vier urls möglich mit einer route:
- a-lot-of-other-stuff/Bericht/-20 (negative Zahl)
- a-lot-of-other-stuff/Bericht/40 (positive Zahl)
- a-lot-of-other-stuff/Bericht/(keine Nummer)
- a-lot-of-other-stuff/Bericht (keine Nummer und kein /)
Meine route sieht derzeit ungefähr so aus:
report:
pattern: /report/{days}
defaults: { _controller: "AppReportBundle:Report:dayReport", days = null }
Die Aktion ist definiert als:
public function dayReportAction($days = null)
{
//my code here
}
Dieser macht im Moment url 1 und 2 arbeiten, aber im Fall von url-3 und 4, erhalte ich eine Fehlermeldung
Route nicht gefunden
Wie kann ich den parameter "Tage" freiwillig?
Und wenn der parameter nicht angegeben ist, wie kann ich die /
weggelassen werden, wie auch?
- Es ist sehr merkwürdig. Da die 4. route sollte funktionieren. Ich habe oft optionalen Parameter verwenden, aber ich verwende Annotation Route definition. Ich sollte nicht definieren, Standardwerte in Anmerkungen, wenn ich definieren default-Wert in Funktion Unterschrift. Vielleicht musst du weglassen einer der Standardwerte Erklärung (zum Beispiel in der routing.yml) oder versuchen, verwenden Sie numerische oder string/bool) - Wert anstelle von null. Vielleicht hilft es ja.
- Ihre route config sollten sein:
defaults: { _controller: "AppReportBundle:Report:dayReport", days: null }
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Weg, um dies zu tun
routing.yml
Da Anforderungen ist ein regexp-pattern können Sie eine negative Zahl ein.
Dem umleiten Abschnitt zwingt die route
/report/
umleiten auf/report
Lesen Sie dazu auf: Cookbok Eintrag - Elnur Antwort
Mit einem solchen Verhalten hätte: