2016-04-05 13 views
2

Ich versuche URL mit Twig in meinem Symfony2-Projekt zu generieren. Meine URL nehmen Boolean als Parameter, wenn ich True in den Zweig, es ist Arbeit, aber wenn ich falsch gesetzt, ist ein Fehler werfen.Symfony2 Twig und boolean false

Eine Ausnahme während der Wiedergabe einer Vorlage geworfen wurde ("Parameter "boolean" für Strecke "route_1" Must-match "[^ /] ++"("“ gegeben).

{{ path('route_1', {'id': item.id, 'boolean': false }) }} 

ich habe keine Anforderung auf diesen Parameter.

/** 
    * @Route("route1-{id}/boolean{boolean}", requirements={"id" = "\d+"}, name="route_1") 
    */ 
    public function Route1Action($id, $boolean, Request $request) { 
     //Some stuff 
    } 

Bearbeiten

Also, verwenden Boolean in URL ist schlecht. Ich stelle Nummer und PHP automatisch in Boolean umwandeln. 0 ist falsch und alle anderen Zahlen sind wahr.

<?php 
var_dump((bool) "");  // bool(false) 
var_dump((bool) 1);   // bool(true) 
var_dump((bool) -2);  // bool(true) 
var_dump((bool) "foo");  // bool(true) 
var_dump((bool) 2.3e5);  // bool(true) 
var_dump((bool) array(12)); // bool(true) 
var_dump((bool) array()); // bool(false) 
var_dump((bool) "false"); // bool(true) 
?> 

http://php.net/manual/en/language.types.boolean.php

Mit diesem Code es Arbeit ist:

Aktion:

/** 
* @Route("route1-{id}/boolean{boolean}", requirements={"id" = "\d+", "boolean" = "\d+"}, name="route_1") 
*/ 
public function Route1Action($id, $boolean, Request $request) { 
    //Some stuff 
} 

Die URL zu generieren:

{{ path('route_1', {'id': item.id, 'boolean': 0 }) }} //To send false 
{{ path('route_1', {'id': item.id, 'boolean': 1 }) }} //To send true (1 or any other numbers) 

Th Danke für deine Hilfe. :)

+0

Bitte zeigen Sie Ihre Aktion. – Mattia

+0

versuche mit "false" – MouradK

Antwort

2

Es Art hängt von ab, was genau wollen Sie in der URL haben. Boolesche Variablen sind im Allgemeinen keine gute Idee, da URL eine Zeichenfolge ist.

Wird die boolesche Variable als true oder als 1 dargestellt?

{{ path('route_1', {'id': item.id, 'boolean': 'false' }) }} 

oder

{{ path('route_1', {'id': item.id, 'boolean': 1 }) }} 

Sie sollten auch die Anforderungen an das Argument angeben, in diesem Fall ich etwas gesendet werden.

Wie auch immer, Sie sollten immer Text-darstellbare Variablen wie numerische Typen oder Text übergeben.

1
<a href="{{ path('route_1', {'id': item.id, 'boolean': 'false' }) }}">Link</a> 
+0

Ich denke, Boolean in Route keine gute Idee zu verwenden. –

Verwandte Themen