Bonjour,

voilà après avoir effectué quelque recherche sur internet et avoir fait des tests, je n'ai toujours pas trouvé la solution à mon problème.
je sens que je ne suis pas très loin mais cela doit surement être une erreur de syntaxe .

J'arrive bien à ajouter du code Html dans ma vue mais dès que j'ajoute le code qui insert du PHP cela me block mon javascript et rien ne fonctionne

add.ctp

<div id="AddMateriel">

    </div>

Mon Javascript en bas de add.ctp

$("#MaterielAddForm").submit(function(){
     $.post("/suivitech/materiels/add",$("#MaterielAddForm").serialize(),function(mat){
    //On décode le JSON envoyé par le controller MATERIEL:add()
          var objM = jQuery.parseJSON(mat);

    //On Charge un nouvelle ligne de Nouveau materiel
$('.loader').fadeIn();
         $("#AddMateriel").append("<fieldset><legend>Nouveau Materiel : N° "+ objM.Materiel.id +"</legend> <b>Type :</b> "+ objM.Materieltype.NOM +", <b>Description :</b> "+ objM.Materiel.DESCRIPTION +", <b>Quantité :</b> "+ objM.Materiel.QUANTITE +"</fieldset>" );
    $('.loader').fadeOut();

                         //ajout d'une image delete pour chaque ligne materiel ajouté
                             $("#AddMateriel").append("<?php echo $this->Form->postLink(
                     $this->Html->image('icones/deleteM.png',
                    array('class' => __('tiptip'), 'title' =>__ ('Supprimer le Materiel'))), 
                    array('controller'=>'materiels' , 'action' => 'delete', 6), 
                 array('escape' => false, 'confirm' => __('Êtes vous sûr de vouloir supprimer ?')) );?>");

          });

il me semble que l'erreur doit provenir des variables de PHP car quand je met ce code là :

$("#AddMateriel").append("<?php echo 'Hello World';?>");

cela fonctionne

mais je n'arrive pas a trouvé la bonne synthaxe pour les variables PHP
(l'erreur ne provient pas du chemin d'accès de l'image car sur d'autres vue cette syntaxe fonctionne très bien dans mon code PHP)
même si je fait un test simple :

//ajout d'une imagge
             $("#AddMateriel").append("<?php echo $this->Html->image('images/deleteM.png');?>");

cela ne fonction pas... :/

Savez-vous comment faire pour résoudre ce problème ?

Cordialement,

Maxime

2 réponses


Vallyan
Réponse acceptée

Lorsque ta page arrive chez le client, et donc que jQuery se met en route, il n'y a plus d'interaction avec le serveur. <u>Tu ne peux pas ajouter du PHP (langage serveur) depuis le client</u>.

De l'ajax pourrait éventuellement résoudre ton problème.

maxime014
Auteur
Réponse acceptée

Merci Vallyan pour cet éclaircissement, effectivement je me suis posé cette question mais maintenant mes doutes sont confirmés,

j'ai contourné le problème en incluant non pas du PHP mais du HTML brut directement :

$("#AddMateriel").append("<fieldset><legend>Nouveau Materiel : N° "+ objM.Materiel.id +"</legend> <b>Type :</b> "
+ objM.Materieltype.NOM +", <b>Description :</b> "+ objM.Materiel.DESCRIPTION +", <b>Quantité :</b> "+ objM.Materiel.QUANTITE 
+" <a href='/suivitech/materiels/delete/"+ objM.Materiel.id +"' class='link'><img src='/suivitech/img/icones/deleteM.png' class='tiptip' alt='sup'></a></fieldset>" );

Pour ce qui est de la demande de confirmation d'un élément ( boite de dialogue javascript "voulez-vous vraiment supprimer...") je ne l'ai pas ajouté, mais c'est facile a mettre en place quand on maîtrise les événements click() de jQuery ;)

Encore merci et bonne continuation ;)