IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Impossible d'interpréter du JS avec Twig


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 46
    Points : 33
    Points
    33
    Par défaut Impossible d'interpréter du JS avec Twig
    Amis du jour, bonjour !

    Récemment je me suis mis à Symfony2 dans le but de construire un projet qui me tiens à cœur mais je bute sur un petit problème, je n'arrive pas à faire fonctionner mon JS dans Twig !!!

    Voici le code dans twig qui ne marche 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <html>
        <head>
            <title>MultiGamingTournament</title>
     
            {% block stylesheets %}
            <link rel="stylesheet" type="text/css" href="{{ asset('/css/jquery.bracket.css') }}" />
            {% endblock %}
        </head>
        <body>
     
            {% block javascripts %}
            <script src="{{ asset('/js/jquery.min.js') }}" type="text/javascript" ></script>
            <script src="{{ asset('/js/jquery-ui-1.8.16.custom.min.js') }}" type="text/javascript" ></script>
            <script src="{{ asset('/js/jquery.bracket.js') }}" type="text/javascript" ></script>
            <script src="{{ asset('/js/jquery.json-2.3.min.js') }}" type="text/javascript" ></script>
     
            <script type="text/javascript"> var autoCompleteData = {
                    teams : [ ["Jean","Jack"],["",""] ],
    		results : [ ] }</script>
     
            <script src="{{ asset('/js/brackets-rd.js') }}" type="text/javascript" ></script>
     
            {% endblock %}
     
            <div id="autoComplete"></div>
     
            <h1>{{ odc.nom }}</h1>
            <p> {{ odc.equipes }} </p>
     
     
     
        </body>
    </html>
    Et pourtant j'ai bien mis les scripts JS dans le fichier ressource/public de mon bundle.

    Le code en php qui marche parfaitement :

    <html>
    <head>
    <title>MultiGamingTournament</title>
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/jquery-ui-1.8.16.custom.min.js"></script>
    <script type="text/javascript" src="js/jquery.bracket.js"></script>
    <script type="text/javascript" src="js/jquery.json-2.3.min.js"></script>
    echo '<script type="text/javascript">var autoCompleteData = {
    teams : [ ["Jean","Jack"],["",""] ],
    results : [ ] }</script>';
    <script type="text/javascript" src="js/brackets-rd.js"></script>
    <?php /* } */ ?>




    <link rel="stylesheet" type="text/css" href="css/jquery.bracket.css" />
    </head>
    <body>
    <div id="autoComplete"></div>
    </body>
    </html>
    Merci d'avance de votre aide !

    Bonne journée.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    cela vient du fait que twig possède plusieurs stratégie pour escaper le contenu (html, js, ...)
    cf : http://twig.sensiolabs.org/doc/filters/escape.html

    une solution simple sans avoir à jouer sur le paramètres escape
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    {%set autoCompleteDataInTwig = {"teams": [ ["Jean","Jack"],["test","toto"]]} %}
    <script type="text/javascript"> var autoCompleteData = {{ autoCompleteDataInTwig | json_encode }}</script>

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 46
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par arnooo999 Voir le message
    Bonjour,

    cela vient du fait que twig possède plusieurs stratégie pour escaper le contenu (html, js, ...)
    cf : http://twig.sensiolabs.org/doc/filters/escape.html

    une solution simple sans avoir à jouer sur le paramètres escape
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    {%set autoCompleteDataInTwig = {"teams": [ ["Jean","Jack"],["test","toto"]]} %}
    <script type="text/javascript"> var autoCompleteData = {{ autoCompleteDataInTwig | json_encode }}</script>
    Encore plus étonnant, j'ai modifié les routes et emplacements des assets pour que ça soit plus clean.

    Il s’avère qu'avec votre code, rien ne s'affiche alors qu'avec le suivant :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <html>
        <head>
            <title>MultiGamingTournament</title>
     
            {% block stylesheets %}
            <link rel="stylesheet" href="{{ asset('bundle/interactionjsonbdd/css/jquery.bracket.css') }}" />
            {% endblock %}
     
        </head>
        <body>
     
            {% block javascripts %}
            <script src="{{ asset('bundles/interactionjsonbdd/js/jquery.min.js') }}" type="text/javascript" ></script>
            <script src="{{ asset('bundles/interactionjsonbdd/js/jquery-ui-1.8.16.custom.min.js') }}" type="text/javascript" ></script>
            <script src="{{ asset('bundles/interactionjsonbdd/js/jquery.bracket.js') }}" type="text/javascript" ></script>
            <script src="{{ asset('bundles/interactionjsonbdd/js/jquery.json-2.3.min.js') }}" type="text/javascript" ></script>
     
            <script type="text/javascript">var autoCompleteData = {
                teams : [ ["Jean","Jack"],["",""] ],
                results : [ ] }</script>
     
            <script src="{{ asset('bundles/interactionjsonbdd/js/brackets-rd.js') }}" type="text/javascript" ></script>
            {% endblock %}
     
            <div id="autoComplete"></div>
     
            <h1>{{ odc.nom }}</h1>
            <p> {{ odc.equipes }} </p>
     
     
     
        </body>
    </html>
    J'ai le nom des équipes ainsi que leurs scores par défaut mais sans aucune mise en page...

    En php :

    Nom : php.PNG
Affichages : 456
Taille : 15,4 Ko

    Avec twig :

    Nom : twig.PNG
Affichages : 442
Taille : 16,9 Ko

  4. #4
    Membre à l'essai
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Vietnam

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Finance

    Informations forums :
    Inscription : Août 2015
    Messages : 9
    Points : 20
    Points
    20
    Par défaut
    Nom : Capture1.PNG
Affichages : 438
Taille : 3,4 Ko

    Crée le dossier js s'il n'est pas déjà créé dans web et copie tes fichier js.

    Ensuite dans ton layout appel les comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script src="{{ asset('js/tonFichierJS.js') }}"></script>

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/10/2010, 12h09
  2. Réponses: 1
    Dernier message: 19/12/2005, 17h09
  3. Impossible de compiler un projet avec #include <glib.h>
    Par canard75 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 14/12/2005, 18h18
  4. Impossible d'envoyer un formulaire avec javascript
    Par Mimi Bulles dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/11/2005, 20h37
  5. Réponses: 2
    Dernier message: 21/07/2005, 14h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo