Bonjour,

J'utilise Symfony 4 et le webpack Encore. Par rapport à ce dernier, je suis étonné quant à un comportement que je ne parviens pas à saisir.

J'ai un fichier principal nommé app.js. Là, j'y importe différents modules et j'y écris différentes fonctions qui seront utilisés par plusieurs templates. Selon moi, ce fichier devrait être chargé sur chaque page car, dans mon template base.html.twig, j'ai ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
        {% block javascripts %}
 
            {{ encore_entry_script_tags ('app') }}
 
            <script src="https://js.stripe.com/v3/"></script>
 
            <script>console.log('home javascript block loaded')</script>
 
        {% endblock %}
Ensuite, j'ai des fichiers qui sont liés à des templates spécifiques. Donc, dans ce cas, mon bloc javascript ressemble à ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
    {% block javascripts %}
 
        {{ parent() }}    
 
        {{ encore_entry_script_tags('periodsCreation') }}
 
    {% endblock %}
La première question que je me pose est la suivante : pourquoi dois-je avoir {{ parent() }} étant donné que mon fichier base.html.twig est chargé à chaque page et qu'il charge lui-même le fichier app.js? Si je ne le fais pas, j'ai effectivement des erreurs.

La deuxième est : pourquoi, lorsque je fais {{ parent() }}, les scripts contenus dans mon template base.html.twig sont-ils appelés 2 fois? J'ai pu objectiver cela grâce à <script>console.log('home javascript block loaded')</script> qui m'affiche 2 fois ''home javascript block loaded'?

D'avance, je vous remercie pour votre aide.