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

MkFramework Discussion :

Charger une vue HTML en ajax


Sujet :

MkFramework

  1. #1
    Membre habitué
    Charger une vue HTML en ajax
    Bonjour,
    Je ne sais pas comment m'y prendre pour charger une vue en ajax.
    J'ai une vue html : newHTML.php
    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
     
    <fieldset>
      <legend>Ajout de pièce</legend>
      <div id="log"></div>
      <form class="form-horizontal" action="" method="POST" >
     
     
      	<div class="form-group">
      		<label class="col-sm-2 control-label">cde_id</label>
      		<div class="col-sm-10"><select name="cde_id" class="form-control" ><option  value="1">1</option><option  value="2">2</option></select></div>
      	</div>
     
      	<div class="form-group">
      		<label class="col-sm-2 control-label">p_id</label>
      		<div class="col-sm-10"><input type="text" name="p_id" value="" class="form-control" /></div>
      	</div>
     
      	<div class="form-group">
      		<label class="col-sm-2 control-label">qte</label>
      		<div class="col-sm-10"><input type="text" name="qte" value="" class="form-control" /></div>
      	</div>
     
     
     
      <input type="hidden" type="text" name="tokenAjax" value="1480723320####e606a7b5accd57aed054d2c7d862e7bc967c9a81" />
      <div class="form-group">
          <div class="col-sm-offset-2 col-sm-10">
      		<input type="submit" class="btn btn-success" value="Ajouter" /> <a class="btn btn-link" href="index.php?:nav=mkCdeLignes::list">Annuler</a>
      	</div>
      </div>
     
      </form>
    </fieldset>


    J'ai prévu un emplacement dans ma vue _list.php
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <!-- emplacement pour les echanges -->
    <div id = "dialogue" title = "Fenêtre">
    <p></p>
    </div>


    Sans recharger la vue list, en jQuery, j'utilise la fonction suivante :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    jQuery(document).ready(function($){
                // Là on peut utiliser $() en ayant la certitude que c'est jQuery, sans conflit possible  
                $(document).on("click", "#btn_ajout", function(evt) {
                  alert("Vous avez sélectionné : " + $(this).text());
                  evt.preventDefault(); // stop le comportement naturel
                  $("#dialogue p").load("index.php?:nav=mkCdeLignes::newHTML");
     
                });
     
            });


    Dans mon contrôleur main, j'ai la méthode suivante :
    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
     
    public function _newHTML(){
     
        //$this->oLayout->setLayout	( 'ajxlayout'	) ; // changement de layout vide pour notre affichage
        //_root::setConfigVar('site.mode','prod'); // desactive la barre Debug
     
        $oView=new _view('mkCdeLignes::newHTML');
     
    		//$oPluginXsrf=new plugin_xsrf();
    		//$oView->token=$oPluginXsrf->getToken();
     
    		$this->oLayout->add('main',$oView);
     
        // vue pour le script
    		$oView=new _view('mkCdeLignes::ns');
    		$this->oLayout->add('main',$oView);
        //echo "<h1>Heelo</h1>" ;
    	}


    Comment charger dynamiquement juste le bout de code html de la vue newHTML sans être obligé de placer ce bout de code dans un fichier html enregistré dans le répertoire /public/newHTML.html de mon site.
    Cordialement

  2. #2
    Rédacteur

    Bonjour,
    Plusieurs questions:

    1. vous avez pas oublié le lien jquery ? dans le code jquery, ça créé un eventement sur un lien avec l'id "btn_ajout"
    2. vous avez bien ajouté jquery à votre site ?
    3. que se passe t il ? vous avez une erreur ?
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Membre habitué
    Bonjour,
    Encore merci pour l'intérêt que vous portez à mon problème.
    Je suis désolé pour mon imprécision, je suis allé directement sur ce qui ne fonctionnait pas.
    En dehors de la vue html : newHTML.php, tous les autres codes sont des extraits.

    1. vous avez pas oublié le lien jquery ? dans le code jquery, ça créé un eventement sur un lien avec l'id "btn_ajout"
    - Non, je n'ai pas oublié le chargement de jQuery, et en cliquant sur le lien "btn_ajout", je charge bien la vue évoquée
    dans la méthode ci-dessous de mon contrôleur main.php, cependant, j'ai un problème d'affichage, d'où ma tentative
    de charger un Layout vide avant, d'où les deux premières lignes en commentaire au début de la méthode.
    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
     
    public function _newHTML(){
     
        //$this->oLayout->setLayout	( 'ajxlayout'	) ; // changement de layout vide pour notre affichage
        //_root::setConfigVar('site.mode','prod'); // desactive la barre Debug
     
        $oView=new _view('mkCdeLignes::newHTML');
     
    		//$oPluginXsrf=new plugin_xsrf();
    		//$oView->token=$oPluginXsrf->getToken();
     
    		$this->oLayout->add('main',$oView);
     
        // vue pour le script
    		$oView=new _view('mkCdeLignes::ns');
    		$this->oLayout->add('main',$oView);
        //echo "<h1>Heelo</h1>" ;
    	}

    2. vous avez bien ajouté jquery à votre site ?
    - oui, il est bien chargé

    3. que se passe t il ? vous avez une erreur ?
    - j'avais un problème d'affichage avec mon menu principal qui se répétait.

    En répondant à cette dernière question, j'ai trouvé la réponse à ma question.
    Dans mon layout vide, je n'avais pas prévu un emplacement pour insérer le code main.
    J'ai donc créé un layout "htmlLayout.php" dans le dossier /layout de mon site et il contient seulement
    le code ci-dessous, cela évite l'affichage que j'avais avec la répétition du menu principal donc avec deux champs de recherche qui se suivent.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    <?php echo $this->load('main') ?>



    Encore merci pour ce guidage GPS vers la solution.

    Cordialement.

  4. #4
    Rédacteur

    Merci pour cette précision

    Pour information, pour les liens ajax vous avez en effet 2 solutions:
    - créer un layout special pour vos appel ajax (avec effectivemnt uniquement le load de l'emplacement "main"
    - afficher directement la vue

    Pour la première solution vous avez trouvé par vous même

    Pour la seconde, cela donnerait avec votre code fourni
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public function _newHTML(){
     
     
        $oView1=new _view('mkCdeLignes::newHTML');
     
        echo $oView1->build();		
     
        // vue pour le script
        $oView2=new _view('mkCdeLignes::ns');
     
        echo $oView2->build();	
        exit;	
        //echo "<h1>Heelo</h1>" ;
    }


    Pour la solution 1, j'avais oublié avoir déjà fait une vidéo
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Membre habitué
    Bonjour,

    Je me demande où finira votre générosité. Vous m'avez donné plus que votre attention.
    Du coup, je me rappelle d'une chanson de Brel qui dit "qu'il y en a qui ont le coeur tellement large qu'on en voit que la moitié".
    Je ne pense pas me tromper en avançant, que vous êtes de ceux-là.

    Encore merci

    Cordialement

  6. #6
    Rédacteur

    Vous me flattez
    C'est normal pour moi d'assurer le SAV de mon framework: c'est déjà difficile pour moi de le faire connaitre: je me dois de remercier les utilisateurs en répondant aux questions
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

###raw>template_hook.ano_emploi###