obtenir les variables de $data

Par sylvain, il y a 11 ans


Bonsoir,

J'ai un formulaire dans lequel est pré rempli des information.
Je fait un debug de request->data et j'ai les données mais je ne sais pas comment obtenir les données de contact.

j'ai essayé sans success echo $data['Contact']['id']

comment faire ?

4 réponses

Ramzz1994, il y a 11 ans

Si j'étais toi, j'affecterais une nouvelle variable dans l'enveloppe de variables (en faisant un set()) pour là simple et unique raison qu'on ne devrait pas directement avoir accès au tableau de données (data) depuis la vue.

Par conséquent, voici la solution

<?php // Dans ton contrôleur public function index() { // $this->set('requestData', $this->request->data); $this->set('contact', $this->request->data['Contact']); } // Dans ta vue debug($contact);

Ramz. :-)

sylvain, il y a 11 ans

j'ai du mal a comprendre, il faut envoyer les deux données ?
contact et request data ?

public function admin_edit($id = null) { if ($this->request->is('put') || $this->request->is('post')) { if($this->Contact->save($this->request->data)){ $this->Session->setFlash('Le contenu a bien été modifié','notif'); $this->redirect(array('action'=>'index')); } } else if($id) { $this->Contact->id = $id; $this->request->data = $this->Contact->read(); } $this->loadModel('Stage'); $d['stages'] = $this->Stage->find('list'); $d['ids'] = $this->Contact->id = $id; $this->set($d); }

Voici mon code, j'ai juste fait ca $d['ids'] = $this->Contact->id = $id;
ca marche mais quelques chose me dit qu'il y a plus simple

Ramzz1994, il y a 11 ans

Non, non. Le ligne en commentaire (// $this->set('requestData', $this->request->data);) c'était seulement pour l'example. Enfin, l'idée c'était de voir à pas tout donner à la vue en le limitant au contact.

$d['ids'] = $this->Contact->id = $id;
Cette ligne se lit de droite à gauche. Par conséquent, il y a un effectation de $id à $this->Contact->id et ensuite de $this->Contact->id à $d['ids']. Toutefois, c'est pas vraiment utile de faire plusieurs fois cette affection. Dans CakePHP, les formulaires sont envoyés dans la requête sous l'index du modèle normalement. Par conséquent, ton $this->request->data contiendra l'indice Contact. Il serait donc préférable de faire

$this->request->data['Contact'] = $this->Contact->read();

Ramz.

sylvain, il y a 11 ans

Bon finalement j'ai trouvé sans rien changé au code de départ.
Car le this->Contact->read() est deja fait dans mon else if
donc il me suffisait simplement de recuperer l'id de la maniere suivante

echo $this->data['Contact']['id'];