Récupérer et traiter un retour JSON

Par donny, il y a 10 ans


Bonsoir,

Je me retrouve face a un probleme pour get les informations en JSON sous Cakephp2

Voici ma methode dans le controller Product:

public function getPathOfProduct($id){ $this->loadModel('Category'); $results = array($this->Category->getPath($id)); echo json_encode($results); }

Je l'appelle depuis ma View Product de cette facon:

$idCategory = $product['Product']['category_id']; $this->requestAction(['controller' => 'products', 'action' => 'getPathOfProduct',$idCategory]);

Le probleme c'est que je recoit bien le contneu du fichier JSON dans ma view mais impossible de le traiter comme je souhaite je le recoit directement comme ceci:

[[{"Category":{"id":"25","parent_id":"0","lft":"39","rght":"48","name”:”test1”,”slug”:”test1”}},{“Category":{"id":"26","parent_id":"25","lft":"40","rght":"47","name”:”test2”,”slug”:”test2”}},{“Category":{"id":"8","parent_id":"26","lft":"45","rght":"46","name”:”test3”,”slug”:”test3”}}]]

Le but c'est que je puisse recuperer par exemple chaque "name"
et id afin de l'aficher sous forme de liste HTML.

je vous remercie pour votre aide.

1 réponse

amethyste, il y a 10 ans

Il faut que tu active l'extension json dans ton fichier routes.php :

Router::parseExtensions(['json]);

ensuites tu charges le requestHandler dans ton controller :

public $components = array('RequestHandler');

Puis dans ta méthode

public function monAction() { $results = ta requête $this->set('results', $results); $this->set('_serialize', ['results']); }

et finalement dans ta vue /Views/Categories/json/monAction.ctp

<?php echo json_encode(compact('results')); ?>