2010-04-29 28 views
2

J'ai créé une source de données personnalisée qui récupère des données à partir d'une API web, et je suis en train de chercher à implémenter la gestion des erreurs.CakePHP - Comment utiliser onError dans le modèle

Dans la source de données, j'appelle $ model-> onError(). Dans le modèle, j'ai créé la méthode onError, et je peux accéder aux détails de l'erreur avec $ this-> getDataSource() -> error;

Cependant, je ne peux pas rediriger ou mettre un message flash parce que ne peut avoir lieu dans le contrôleur, alors que dois-je faire ici pour communiquer l'erreur à l'utilisateur?

Répondre

2

Les erreurs sont-elles pertinentes pour les champs de votre modèle? Si oui, utilisez $ this-> invalidate ($ field, $ message) dans Model :: onError()

+0

Merci. J'ai ajouté l'erreur $ this-> invalidate (0, $ this-> getDataSource() ->); dans la méthode onError du modèle. Pour y accéder depuis le contrôleur, je suis en train de faire: if (! $ This-> Model-> valide()) $ this-> flash ($ this-> Model-> validationErrors [0], emplacement de redirection ..) ; – Richard

0

Je compilerais toutes les erreurs dans le modèle dans un ensemble d'erreurs, peut-être dans un tableau. Ensuite, je le définirais comme une variable dans le modèle.

Ainsi, dans mon contrôleur je peux alors faire $this->Model->getErrors() ou similaire à lire et à retourner la valeur définie dans le modèle.

Puis, dans beforeFilter() mon contrôleur je vérifie pour voir s'il y avait des erreurs, et s'il y avait, les pousser dans le flash. $this->Session->setFlash($this->Model->getErrors(),'default',array('class'=>'error-message'));

Questions connexes