Bonjour,

je débute dans cakephp et après plusieurs tentatives sur ce probleme, je n'y arrive toujours pas et c'est pour cela que je sollicite votre aide.
En fait dans ma vue j'ai crée un formulaire qu'avec un bouton, je m'explique si je clique dessus il me renvoie faire une autre action. Mais mon problème j'aimerais bien faire des tests en base de donnees (comparer par exemple) mais je n'arrive pas à récupérer l'ID ou bien le paramètre.

Merci pour votre aide

Voila ma vue:

<?php 
        foreach($ingredients as $data):

            $test = $data["Question"];
            echo $test["Questions"];
        endforeach;

foreach($ingredients as $data):

$test = $data["Question"];
echo $this->Form->create(null, array('url' => 
array('controller' => 'Reponses', 'action' => 'reponse', 
'parametre' => 'exemple')));
echo $this->Form->end($test["Suggestion1"], 
array('class' => 'valeur'));

        endforeach;

9 réponses


FactureHero.com
Réponse acceptée

Si tu veux récupérer un tableau de valeurs, il faudrait :
1/ que tu aies des champs input dans ton fomrulaire (de type hidden si tu veux)
2/ quand tu postes le formulaire, sauf erreur fait plutôt ton bouton submit comme ça :

<?php echo $this->Form->submit('intitulé du bouton', array('name'=>'lenamedubouton', 'class' => 'btn'))?>

Et dans le controller tu récupères les datas :

 if (isset($this->request->data['lenamedubouton'])) {
                $datasend = array(
                        'nomDeTonChamp' => $valeur,
                        'nomDeTonChamp2' => $valeur
                        ///...
                            );

Salut, je sais pas ce que tu veux vérifier, mais si c'est des informations postées il faut les inclure dans ton formulaire car là tu envois aucune donnée.

obenamar
Auteur

En fait je veux récupére le bouton pour faire des tests en base de donnees

Il faut que le bouton de validation est un name, après dans ton controlleur tu peux tester la valeur du bouton cliqué

obenamar
Auteur

j'ai essayé aussi il me renvoie toujours la valeur null et un message d'erreur

Warning (2): Missing argument 1 for ReponsesController::resultat() [APP\Controller\ReponsesController.php, line 8]
Notice (8): Undefined variable: id [APP\Controller\ReponsesController.php, line 12]
\app\Controller\ReponsesController.php (line 12)
null

Post le code de ton controller ReponsesController. Toute la function ou au moins autour de la ligne 12
et peut-être qu'on pourra t'aider.

obenamar
Auteur

Oui merci
voila sa fonctionne bien mais serait il possible de récupérer l'ID de ce bouton au lieu du nom

Ton bouton a un ID. ALors je ne sais pas pourquoi il est là ? ton id devrais plutôt être dans un input de type hidden.

Mais si c'est ça que tu as : alors je le récupèrerai en Javascript soit au chargement de la page soit au click et je le mettrai dans un input (id), avant d'envoyer les datas.

1 / tu crée un champ input 'id' comme tu as créé les autres.
2/ en JS tu récupères l'id de ton bouton

 $('.mybutton').click(function (e) {
 var a =$this;
 e.preventDefault();
 //on récupère la valeur de l'attribut id du bouton dans la variable id
 var id = a.attr('id');
 // on insère la valeur de l'id dans l'input
 $('input#inputid').val(id);  
    });

2 choses :
1 / bien qu'on trouve solution à tout je pense que ton truc "global" peut largement être amélioré et gagnerai a avoir un code "plus classe" :) (je ne capte pas pourquoi ton Id se retrouve là :) )
2/ Du coup sur le code du dessus, à mon avis fais le plutôt sur l'événement du chargement de la page que sur le clic.

PS : si la solution du dessus te convient n'hésites pas à la passer en résolu ;)

obenamar
Auteur

Oui merci