2014-09-08 4 views
2

Im actuellement la construction d'une API REST en utilisant cakephp. Fondamentalement, quand j'envoie des requêtes etc à par exemple add.json alors il faudra les données d'entrée et de me fournir des données json, de même si je l'envoie à add.xml il me donnera une réponse xml.CakePHP json/xml erreur vues

Cependant, si quelque chose se passe mal lors de l'exécution de cette requête, telle qu'une contrainte de clé étrangère, la réponse est une page HTML avec l'erreur à l'intérieur. Est-il possible d'avoir des vues json/xml pour les erreurs?

Également dans la validation cakephp, une vérification de clé étrangère peut-elle être effectuée dans le cadre de la validation?

Répondre

1

Ok donc j'ai réussi à résoudre ce problème.

D'abord j'ai changé mon app/Config/core.php pour changer le rendu d'exception. Ensuite, j'ai créé mon RESTExceptionRenderer.php dans l'app/Lib/Error. App :: uses ('ExceptionRenderer', 'Erreur');

class RESTExceptionRenderer extends ExceptionRenderer { 

    protected function _outputMessage($template) { 
     /*Check if we are an json or xml request*/ 
     if($this->controller->request->params['ext'] === 'json'){ 
      $this->controller->layout = null; 
      echo parent::_outputMessage("ajax/" . $template); 
     } else if($this->controller->request->params['ext'] === 'xml') { 
      $this->controller->layout = null; 
      echo parent::_outputMessage("xml/" . $template); 
     } else { 
      parent::_outputMessage($template); 
     } 
    } 

} 

De cette façon, si certains accès index.json etc et une exception est levée l'erreur sera retourné dans JSON plutôt que html.