2012-10-18 5 views
5

Angenommen, Sie haben einen Controller in Symfony2.1, der eine Liste numerischer Werte empfängt, z.So übergeben Sie eine dynamische Anzahl von Eingabewerten an einen Controller in Symfony2.1

public function showAction($el1, $el2, $el3){...} 

wo Ich gehe davon aus, dass die i -te $ eli eine numerische ID ist. Daher werde ich, dass die Steuerung in einem Zweig Vorlage machen, wie folgt:

{% render 'AcmeBundle:BundleName:show' with {'el1':'1', 'el2':'5', 'el3':'7'} %} 

Es wäre schön, einen einzigartigen Wert, der sie alle Gruppen (wie ein Array) passieren, z.B.

public function showAction($els){...} 

wo $ els ist ein Array von Werten. Natürlich ist das nicht möglich, auch wenn der Controller in einer Twig-Vorlage gerendert wird.

Die einzige Möglichkeit, die Eingabe ein wenig dynamischer zu machen, besteht darin, einen eindeutigen Wert zu übergeben, der alle ID-Eingabewerte gruppiert und sie mit einem Token trennt. Zum Beispiel:

{% render AcmeBundle:BundleName:show with {'els': '1_5_7'} %} 

Ist dies der beste Ansatz oder kann ich es besser machen?

Antwort

0

Warum nicht einfach ein Array von Argumenten übergeben?

Controller:

public function showAction(array $els) 
{ 
    // ... 

    return ['els' => $els]; 
} 

Ausblick:

{% render 'AcmeBundle:Demo:show' with {'els': {'el1': 1, 'el2': 5, 'el3': 7}} %} 

oder wenn Sie einen numerischen indiziertes Array übergeben möchten:

{% render 'AcmeBundle:Demo:show' with {'els': [1, 5, 7]} %} 

Auf diese Weise können Sie passieren in eine beliebige Anzahl von Argumenten Sie wollen.

+0

Dies gilt, wenn das Array manuell in der Zweigvorlage erstellt wird (d. H. Mit einer festen Größe und den im Voraus bekannten Elementen). Wie würden Sie dasselbe tun, wenn Sie ein Array verwenden, dessen Länge und Inhalt unbekannt sind? Es könnte zum Beispiel von einem anderen Controller zurückgegeben werden. – JeanValjean

Verwandte Themen