web-dev-qa-db-fra.com

Passer variable de twig à js

Existe-t-il un moyen de transmettre des variables de twig à un fichier javascript situé dans le répertoire public/js de l’ensemble Ou dois-je affecter mes variables dans un modèle, puis inclure mon fichier de script où vars sera utilisé?

10
nowiko

Assignez la variable dans le modèle et récupérez-la avec javascript ...

<script>
var foo = '{{ foo }}';
alert(foo);
</script>
21
fire

Une autre façon de ne pas avoir votre fichier javascript comme modèle serait d’avoir la valeur javascript comme attribut data-* et de l’obtenir ensuite de votre fichier javascript. Cela signifierait que votre javascript ne serait pas nécessairement couplé à votre fichier de brindille.

<a href="#" data-id="{{ entity.id }}" id="some-link">Link</a>

Avec jQuery ..

var id = $('#some-link').data('id');

Avec javascript régulier (je pense) ..

var id = document.querySelector('#some-link').dataset.id;
21
qooplmao

Vous pouvez l'utiliser dans votre brindille

<script type="text/javascript">
    /* <![CDATA[ */
    var settings = {
        example: {{ 'something' | trans }}
        }
    };
    /* ]]> */
</script>

alors vous pouvez y accéder dans votre js:

console.log(settings.example);
0
numediaweb