2017-04-12 9 views
0

Ich habe ein Array arr von der Steuerung an einem Zweig Vorlage schickte einige JavaScript-Skript enthält, möchte ich, wie dies für Schleife Zugang Reihen des Arrays verwenden:Javascript Variable innerhalb Zugriff auf {{}} symfony Zweig

for (var i = 0; i < 3; i++) { 
       alert('{{ arr[i] }}'); 
      } 

Aber die Variable i nicht bekannt ist, bekomme ich diesen Fehler:

Variable "i" existiert nicht.

Irgendwelche Vorschläge?

+2

Sie können das nicht tun. Die JavaScript-Variable 'i' ist nur zur Laufzeit verfügbar. Was Sie tun müssen, ist parse Ihre 'Zweig-Array' zu einem Javascript. [Related] (http://stackoverflow.com/questions/13928729/use-javascript-to-access-a-variable-passed-through-twig) – DarkBee

+0

Wie kann ich das tun? – Hamza

+0

Wir wissen nicht, was Sie tun möchten, fügen Sie ein besseres Beispiel hinzu – goto

Antwort

3

Dies ist, wie von der Steuerung zu einem JavaScript-Array ein PHP-Array erhalten durch Zweig:

-Controller

return $this->render(
    'AppBundle:index.html.twig', 
    array(
     'myArray' => array('foo', 'bar', 'z') 
    ) 
); 

Zweigansicht

{% block javascripts %} 
    <script type="text/javascript"> 
     var myArray = '{{ myArray | json_encode | raw }}'; 
    </script> 
{% endblock %} 
+0

Danke, das funktioniert, nur für den Fall, dass jemand dies benötigt, um das Array myArray zu analysieren, die Sie verwenden können: var jsonData = JSON.parse (myArray); – Hamza

0

Zweig ist PHP. Sie senden ihre Werte an Javascript, aber Sie können Javascript-Variablen nicht auf PHP anwenden. (Mit Ausnahme von AJAX etc ... aber hier nicht relevant)

möglich:

/* javascript variable */ 
var name = {{ object.name }} 
console.log(name); 

Impossible:

/* javascript variable */ 
var name = 'toto'; 
{# Twig #} 
{{ name }} // <- IMPOSSIBLE 
+0

In meinem Fall sende ich PHP-Array an Javascript, aber ich weiß nicht, wie man es analysiert. – Hamza

+0

Sie könnten den Symfony-Serializer verwenden oder wenn es ein einfaches Objekt ist: [Verwenden Sie Javascript, um auf eine Variable zuzugreifen, die an Twig übergeben wurde] (http://stackoverflow.com/questions/13928729/use-javascript-to-access-a-variable- Pass-Through-Zweig) – goto