Bonjour

Quelle est la meilleure façon de faire quand il s'agit d'externaliser une fonction javascript dans un fichier et que cette fonction fait référence à des id de champ qui sont générés par twig ?

Je m'explique.

Je génère fans un fichier index.html.twig le formulaire suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
{{ form_row(form.customer)       }}
Je veux réaliser une action jquery sur le champ généré.
Pas de problème si mon jquery se trouve dans index.html.twig

Code : Sélectionner tout - Visualiser dans une fenêtre à part
 $('input#{{ form.customer.get('id') }}').click

par contre si je souhaite externaliser cette action Jquery dans un fichier file.js, comment faire proprement référence à l'id de mon champ ? (proprement = sans aller chercher l'id html généré par twig)

Je tiens une solution qui ne me satisfait pas:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    //AcmeFooBundle/Resources/public/js/myfile.js
    function blah(field_id) {
        $('input#'+field_id)
    }
 
    #AcmeFooBundle/Resources/views/index.html.twig
    {{ form_row(form.customer)       }}
    <script>
    blah('{{ form.customer.get('id') }}')
    <script>
 
    {% javascripts
        '@AcmeFooBundle/Resources/public/js/*'
    %}
    <script type="text/javascript" src="{{ asset_url }}"></script>
    {% endjavascripts %}

Cette solution fonctionne mais quelque part je souhaiterai ne pas avoir à passer les id twig en argument de ma fonction, mais y faire directement réfèrence dans le corps de la fonction. Cela suppose d'avoir un template twig de mon fichier javascript, mais là je ne sais plus faire.

Quelqu'un a une idée ?