Bonjour,
je suis en train de remplir un formulaire avec CakePHP. Je veux, au moment que je sélectionne un produit son prix s'affiche .
j'ai suit ce tutoriel http://www.webandcow.com/Page/Tutoriels/110/De-l-Ajax-avec-CakePHP-3-et-Handlebars#main-content

add.ctp

<fieldset>
    <legend><?= __('Add Lignecommande') ?></legend>
    <?php
        echo $this->Form->input('commande_id',array('type'=>'text','label' => 'identifiant de la commande','value' =>  $this->request->session()->read('commande_id') ,'readonly' => 'readonly'));
       // echo $this->Form->input('commande_id', ['options' => $commandes]);
        echo $this->Form->input('produit_id', array('options' => $produits,
        'label' => 'Produit',
        'id'=>'produit_id',
        'empty' => '----- Selectionner un produit -----', 
        'onchange'=>'selectProduit()'));
        echo '<div id="prix_id" class="form-group" style="height: 52px;"><label class="col-md-9 col-md-offset-3"></label></div>';
       // echo $this->Form->input('prixLigneCommande');
        // echo $this->Form->input('tvaLigneCommande');
         echo $this->Form->input('qteLigneCommande');

    ?>
</fieldset>

Ce que je fais

LignecommandeController

public function getPrix($idProduit)
  {
     // Si c'est une requête AJAX
     if($this->request->is('ajax')) {

         // Force le controller à rendre une réponse JSON.
         $this->RequestHandler->renderAs($this, 'json');
         // Définit le type de réponse de la requete AJAX
         $this->response->type('application/json');
         // Find pour récupérer les prix 
        $response = $this->Lignecommandes->Produits->find('list')->where('produit_id',$idProduit);

         // Chargement du layout AJAX
         $this->viewBuilder()->layout('ajax');
         // Créer un contexte sites à renvoyer 
         $this->set('prix_s',$response);
         // Généreration des vues de données
         $this->set('_serialize', ['prix_s']);
     }
 }

test.js

$(document).ready(function() {
function selectProduit() {

    var idProduit = $('#produit_id').val();

    $('#prix_id').html('<div class="col-md-1 col-md-offset-6 control-label"><i class="fa fa-spinner fa-spin"></i></div>');
    $('#select_prix').html('');

    $.ajax({
        url: varGlobaleRacine + 'Lignecommandes/getPrix/' + idProduit,
        type: 'GET',
        dataType: 'JSON',

        success: function (response) {

            prix_s = response.prix_s;

            if(prix_s.length == 0){
                $('#prix_id').html('<label class="col-md-9 col-md-offset-3">Aucun produit pour le moment</label>');

            }else{
                $('#prix_id').html(
                    '<label class="control-label col-md-3" for="produit_id">prix</label>' +
                    '<div class="col-md-9">'+
                        '<select name="prix_id" id="select_prix" class="form-control">' ;

                            $.each(prix_s, function( idProduit,  prixLigneCommande ) {

                                $('#produit_id').append('<option value="' + idProduit + '" >' + prixLigneCommande + '</option>');
                            });

                        $('#prix_id').append(
                        '</select>' +
                    '</div>');
            }

        },
        // En cas d'erreur, afficher le statut et l'erreur
        error:function(jqXHR, textStatus, errorThrown){
                alert(textStatus);
                alert(errorThrown);
        }
    });
}

$('#produit_id').change(function(event) {
    selectPrix();
});

});

Ce que je veux

quand je sélectionne un produit, malheuresement son prix ne s'affiche pas.

Ce que j'obtiens

Merci d'avance pour votre aide.
bonne nuit[]()
Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

Aucune réponse