Vue : admin_add.ctp

<div class="page-header">
    <h1>Ajouter un membre</h1>
</div>
<?php 
    echo $this->Form->create('User', array('type' => 'file'));
    echo $this->Form->input('picture', array('label' => 'Photo', 'type' => 'file'));
    echo $this->Form->input('username', array('label' => 'Le login:',
                    'style' => 'height: 25px;'));
    echo $this->Form->input('name',array('label' => 'Nom:',
                    'style' => 'height: 25px;'));
    echo $this->Form->input('password',array('label' => 'Mot de passe: ',
                    'style' => 'height: 25px;'));
    echo $this->Form->input('passwordconfirm',array('label' => 'Confirmer le mot de passe: ', 'type' => 'password',
                    'style' => 'height: 25px;'));
    echo $this->Form->input('role', array('value' => 'membre', 'type' => 'hidden'));
    echo $this->Form->input('level_id', array('label' => 'Le niveau scolaire: ',
                    'style' => 'height: 25px;',
                    'class' => 'ajaxListe',
                    'data-url' => $this->Html->url( array( 'controller' => 'users', 'action' => 'getgroupes', 'admin' => true ), true )

                    ));
    echo $this->Form->input('groupe', array('options' => array(), 
                    'style' => 'height: 25px; width: 50px;'));
    echo $this->Form->input('actif', array('label' => 'Compte actif'));

    echo '<br />';
    echo $this->Form->end(array('label' => 'Ajouter l\'utilisateur', 'class' => 'btn btn-primary'));
?>

Controller: UsersController

public function admin_getgroupes() {
        if ( $this->request->is( 'ajax' ) ) {
            $this->loadModel('Level');
            $result = $this->Level->find( 'first', array( 
                'conditions' => array( 'id' => $_GET'id'] ) ,
                'fields' => array( 'nbre_groupes' ) 
                ));
            $ret'res'] = $result'Level']'nbre_groupes'];
            echo json_encode( $ret );
            exit();
        }
    }

Ajax (jQuery):

$(".ajaxListe").live("click", (function(e){
        var select = $(this);
        $.get( 
            select.data('url'),
            { id: $( '#UserLevelId' ).val() }, 
                function( data ) {
                    var obj = jQuery.parseJSON( data );
                    $( '#UserGroupe' ).find('option').remove();
                    for(var i=0; i < obj.res; i++){
                        $( '#UserGroupe' ).append(new Option(i+1, i+1, false, false));
                    }
                }
            );
        return false;
    }));

6 réponses


@GeeSa

'data-url' => $this->Html->url( array( 'controller' => 'users',
 'action' => 'getgroupes', 'admin' => true ), true )

est la clé dont j'ai beau et bien cherché.
j'espère être utile et que j'ai pas brisée une règle d'utilisation de ce Forum.
Salut.

Bonjour, je n'arrive pas a récupérer ma valeur envoyer par la méthode Post ou Get.
Je fais un debug de $_POST, et il est vide, alors que ma requete Ajax est bien envoyer.

Pourrais tu m'aider.

Sûrement tu as une erreur quelque part dans ta vue (page).
si tu peux la poster ça sera mieux.

Ma vue:

mon fichier js:

Ma fonction dans le controller :

C'est pour faire 3 listes déroulante liées.
J'appel RequestHandler dans mon AppController.
Aimerais tu voir les écrans de l'outils de développement de google chrome ?
Merci de ton aide ça fais un sacré moment que je suis sur le problème. ^^

Sincèrement j'ai pas su trouvé l'anomalie dsl !!
sinon je pense pas bien comprendre ton problème hèhè.

oh non me dis pas ca... XD je cherche depuis 2 semaines... si tu veux je t'envoi mon dossier. Faut vraiment que je trouve!