2013-03-19 5 views
5

Dieser Code geben den richtigen $id Variable vom Typ null Dumps:Wie ein Null-Standardparameter in einer XML-Routing-Datei

/** 
* Show user 
* 
* @Route("/show/{id}", name="acme_user_show", defaults={"id"=null}, requirements={"id"="\d+"}) 
*/ 
public function showUserAction($id = null) 
{ 
    var_dump($id); 
} 

während der folgende Code gibt einen $id Variable vom Typ string : string(4) "null"

/** 
* Show user 
* 
*/ 
public function showUserAction($id = null) 
{ 
    var_dump($id); 
} 

routing.xml

<route id="acme_user_show" pattern="/show/{id}"> 
    <default key="_controller">AcmeUserBundle:User:show</default> 
    <default key="id">null</default> 
    <requirement key="id">\d+</requirement> 
</route> 

ich die 2 annehmen würde, um ähnliche Ergebnisse zu geben, ist das normal? Wie würde man einen Standard-Null-Wert in XML geben?


  • Ich besuche die /showUser Pfad zu testen, ob $id Variable null ist.
  • Ich habe auch versucht <default key="id" /> statt <default key="id">null</default> => kein Erfolg
+0

Was passiert, wenn Sie einfach das komplette 'default [key = id]' - Element aus Ihrem XML entfernen? –

+0

Ich bekomme eine 404: 'Keine Route gefunden für" GET/showUser "' weil es keinen Standardwert gibt :( – Mick

Antwort

6

Gerade Patt Antwort zu klären, dieses Problem behoben wurde, die richtige Art und Weise zu bestimmen, wie das ist:

<default key="threadId" xsi:nil="true" /> 

So vollständige Route Spezifikation in Ihrem Fall so sein würde:

<route id="acme_user_show" pattern="/show/{id}"> 
    <default key="_controller">AcmeUserBundle:User:show</default> 
    <default key="id" xsi:nil="true" /> 
    <requirement key="id">\d+</requirement> 
</route> 
+0

Gut gemacht! Ich akzeptierte meine Antwort, um Ihre zu akzeptieren. Ich bin froh, dass dies endlich behoben ist! – Mick

2

Diese Funktion ist nicht in XML (noch) nicht implementiert ist. Siehe hierzu bug report.

@Aitboudad: Der Routing-xml loader nicht Nullwert nicht unterstützt, ist der richtige Weg, um repräsentiert null XML-Elemente ist xsi: nil = "true".

Verwandte Themen