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é?
Assignez la variable dans le modèle et récupérez-la avec javascript ...
<script>
var foo = '{{ foo }}';
alert(foo);
</script>
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;
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);