SAlut,
je ne sais pas si m'a question est bête, j'aimerai savoir comment faire pour récupérer les paramètre passer dans un formulaire a partir de nom controlleur.
dans ma vue j'ai ceci:```
<?php

                        echo $this->Form->create('Utilisateur', array('url' =>array('controller' => 'Membres','action'=>'Updatecompte/param_fields:romeo','class'=>'form-inline'));?>

                        <?php
                        echo $this->Form->input('Utilisateur.addresse', array('label'=>' Addresse &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;','class'=>'form-control','value'=>$add));
                        ?>
                        <br>
                        <?php
                        echo $this->Form->button('Modifier', array('type'=>'submit','class'=>'btn btn-primary btn-modifier'));
                        echo $this->Form->end();
                    ?>

j'aimerai que lorsque l'on soumet le formulaire que je puisse récupérer mon paramètre 
quand je fais ceci $this->param('param_fields') dans mon controleur cela me retourne null, je ne sais pas si il y'a une autre façon.

9 réponses


Si tu veut récupérer les données postées c'est :

    $this->request->data['Le nom du model']['le nom du champ'];

Si tu veut récuperer les données dans l'url:

    $this->request->params['clé de ce que tu souhaite récupérer']
romses
Auteur

merci mais lorsque je fais un debug($this->request->param['param_fields']); cela m'affiche null

Pour bien comprendre ton probleme : tu es dans un formulaire de modification d'utilisateur et tu as besoin de récupérer l'id de l'utilisateur pour faire ton update dans ta base ?

Bon j'avais oublié un s à params

    debug($this->request->params)

le ['param_fields'] sera l'index de ce que tu veut récupérer

romses
Auteur

un peu oui, sauf que je veus aussi récupérer un paramètre qui va me permettre de faire un test avant de faire la mise à jour.
mon souçis est de savoir comment récupérer les données du forms avec le paramètre $this->request->param['param_fields'], passé

Euh

$this->request->params te permet de récupérer des données dans l'url par exemple ou le controller appelé, l'action appelé, le type de device qui appel la page etc...

Mais toutes les données que tu envoi par post sont récupérable par

$this->request->data

romses
Auteur

sa je le sais, quand je fais $this->request->data['le nom du paramètre'] rien ne récupère pas le paramètre transmi

ton "paramètre" est bien une valeur transmise en POST depuis un formulaire?

Bonjour.

ton "paramètre" est bien une valeur transmise en POST depuis un formulaire?

Non, son paramètre param_fields, il veut le passer en GET via l'url, sauf qu'il a mal défini son url.

C'est quoi ça : Updatecompte/param_fields:romeo ?
Ce n'est pas le nom d'une action (fonction).
Si tu veux passer des paramêtres dans ton url, il te faut plutôt faire comme ceci :

array('controller' => 'membres','action'=>'updatecompte', 'param_fields' => 'romeo')

Au passage, lorsque tu définies une url via la clé url dans la méthode create du Helper Form, n'y mélanges pas les autres paramètres, comme la class par exemple.
Et puis, dans la méthode create, tu ouvres 3 parenthèses, mais tu n'en referme que 2.

sa je le sais, quand je fais $this->request->data['le nom du paramètre'] rien ne récupère pas le paramètre transmi

C'est normal, le $this->request->data, c'est pour les données transmises dans le formulaire, via les inputs si tu préfères et non pour les paramètres passés en get via l'url.
Pour savoir via quel index est reconnu ta variable au niveau de ta fonction, si les données sont bien postés via le formulaire, tu fais un debug sur $this->request->params :

if ($this->request->is('post') {
    debug($this->request->params); die();
}

Le debug te retournera un tableau.