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 :

Mettre un lien twig dans du HTML inséré dans un code JavaScript [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Points : 82
    Points
    82
    Par défaut Mettre un lien twig dans du HTML inséré dans un code JavaScript
    Bonjour,

    Dans un twig d'un projet Symfony, j'ai un bout de code en JavaScript (AJAX).

    Dans ce code en JavaScript, je génère de l'HTML pour afficher un tableau dans une modal. Du coup, dans ce tableau je met différentes informations que je récupère de ma BDD et je met notamment des boutons "Supprimer".

    Ce que j'essaie de faire, c'est de faire en sorte que ces boutons (qui sont des liens <a></a>) soient dirigés vers une action du controlleur qui supprimera l'objet en question grâce à son Id, ici il s'agit de coffres.

    Je ne vois pas comment faire étant donner que je cherche à donner un path du routing dans du code HTML et non dans le twig en lui même.

    J'ai mis en rouge la partie de code qui me pose problème. Peut être que la méthode que j'emploie n'est pas la bonne. Pouvez vous m'orienter pour rendre le code fonctionnel?

    Je vous remercie,

    Voilà mon code JavaScript:

    base.html.twig:

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <script type="text/javascript">
    $(document).ready(function()
    {
    	var contenuModal;
    	var tableauCoffre = new Array();
    	var currentCoffre;
    	
    	var valueCoffreOnline = function()
    	{
    		$.ajax(
    		{
    			type: 'GET',
    			url: "{{ url('ajax_appli_coffre_requete') }}",
    
    			success: function(data)
    			{
    				nb_coffres = data["nombre_coffre"];
    				
    				listeCoffres = data["liste_coffres"];
    
    				contenueModal = '<table><thead><tr><th>Nombre d\'objets</th><th>Couleur du coffre</th></tr></thead><tbody>';
    				
    				var currentCoffre;
    				for(currentCoffre of listeCoffres)
    				{
    					contenueModal = contenueModal + '<tr><td>' + currentCoffre.nombre_objets + '</td><td>' + currentCoffre.couleur + '</td><td><a id="suppr" href={{ path('ajax_appli_supprimer_coffre', {'coffre_id': currentCoffre.id}) }} role= "button" 
    					 value="Supprimer"></a></td></tr>';
    				}
    
    				contenueModal = contenueModal + '</tbody></table>';
    
    				//On récupère le div du modal et on le complète avec la variable contenuModal
    				document.getElementById('coffremodal').innerHTML = contenueModal;
    				
    				$("#carre_rouge_notification").html(nb_coffres);
    			}
    		});
    	}
    
    	valueCoffreOnline();
    });
    </script>

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Points : 1 022
    Points
    1 022
    Par défaut
    il me semble trés simple de lancer des action supprimer avec ajax .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    {% for xx  in xx %}
     
        <tr> 
            <td>      
                <a id="id="{{xx.id}}"" href='#'    class='btn btn-sm btn-primary'>
                    <span class=''></span> xx
                </a>
            </td>                                            
        </tr>
    Ensuite tu mets du javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     <script type="text/javascript">
            $("#{{xx.id}}").click(function () {
         // ton appel  ajax , l'action supprimer avec en parametre l id concernée //
    });

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Points : 82
    Points
    82
    Par défaut
    Re,

    Non, justement, je ne peux à priori pas faire ce que tu me proposes étant donnée que dans ton premier code, c'est du twig. Moi, je génère du pur html via le JavaScript.

    Du coup, je ne peux pas utiliser les accolades comme tu fais dans:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    {% for xx  in xx %}
        <tr> 
            <td>      
                <a id="id="{{xx.id}}"" href='#' class='btn btn-sm btn-primary'>
                    <span class=''></span> xx
                </a>
            </td>                                            
        </tr>
    De toute façon, tout ce que je fais, je le fais dans un bloc <script type="text/javascript"></script>.

    Etant donné que je ne peux pas utiliser du twig dans ce que je génère comment puis-je me débrouiller. Peut être uniquement avec du JavaScript?

    Merci de m'orienter

  4. #4
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    une méthode de borg bien bourrin permet de répondre à ton problème ( si j'ai bien compris la question)

    en javascript :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    
    var valueCoffreOnline = function()
    	{
    		$.ajax(
    		{
    			type: 'GET',
    			url: "{{ url('ajax_appli_coffre_requete') }}",
    
    			success: function(data)
    			{
    url = "{{ path('ajax_appli_supprimer_coffre', {'coffre_id': 'xxx'}) }}";   // le modèle qui va servir dans la boucle javascript  // 'xxx' est l’appât qui va être remplacé par l'id dans la boucle
    
    
    				nb_coffres = data["nombre_coffre"];
    				
    				listeCoffres = data["liste_coffres"];
    
    				contenueModal = '<table><thead><tr><th>Nombre d\'objets</th><th>Couleur du coffre</th></tr></thead><tbody>';
    				
    				var currentCoffre;
    				for(currentCoffre of listeCoffres)
    				{
                                         url_current = url.replace("xxx", currentCoffre.id);    //  on modifie xxx par l'id,  et ouééé mec les borgs sont les meilleurs
    
    					contenueModal = contenueModal + '<tr><td>' + currentCoffre.nombre_objets + '</td><td>' + currentCoffre.couleur + '</td><td><a id="suppr" href="' + url_current +'" role= "button" 
    					 value="Supprimer"></a></td></tr>';
    				}
    
    				contenueModal = contenueModal + '</tbody></table>';
    
    				//On récupère le div du modal et on le complète avec la variable contenuModal
    				document.getElementById('coffremodal').innerHTML = contenueModal;
    				
    				$("#carre_rouge_notification").html(nb_coffres);
    			}
    		});
    	}
    
    	valueCoffreOnline();
    });
    </script>

    c'est pas merveilleux ça ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 162
    Points : 82
    Points
    82
    Par défaut
    Je te remercie Dukoid. Cette méthode fonctionne très bien.

    Je vais tout de même creuser ta solution MehrezlabidiMehrez car ça pourrait à priori marcher si je modifie mon code.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lien vers un fichier html exterieur dans le menu
    Par antav dans le forum Scilab
    Réponses: 1
    Dernier message: 14/06/2012, 21h49
  2. Exécuter une fonction JS dans un HTML inséré par un <object>
    Par GRAF dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/03/2011, 21h23
  3. Site piraté : code html inséré dans ma page
    Par teraDev dans le forum Sécurité
    Réponses: 24
    Dernier message: 27/05/2009, 19h21
  4. Réponses: 2
    Dernier message: 07/08/2006, 22h36
  5. Probleme script HTML inséré dans du PHP
    Par perlgirl dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 20/07/2006, 14h44

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