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.
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')); ?>