Bonjour avairet ,
Merci pour ta réponse. Je n'ai pas encore tous les réflexes "Cake"
concernant la méthodologie de travail. Ta suggestion est très intéressante.
Avant de te répondre, j'ai fait quelques recherches à partir de la voie
que tu m'as montré :
Je ne suis pas arrivé à utiliser onError().
J'ai créé un app/app_model.php (class AppModel extends Model) ou même un
app/app_controller.php (class AppController extends Controller), ça ne
fait rien.
En ce qui concerne la récupération du n° d'erreur, j'ai fouillé dans les
classes, et je suis arrivé à la solution suivante , au niveau de mon
modèle :
if (!($ret = $this->query($sql)))
{
$db =& ConnectionManager::getDataSource($this->useDbConfig);
$err = mysql_errno ($db->connection);
// traitement de l'erreur par un switch
}
Le hic, c'est que si debug != 0, j'ai forcément le texte par défaut de
Cake qui apparait. Or, que je sois en développement ou en production, si
je fais un traitement de l'erreur 1062 (unicité), je ne veux plus que
cake m'affiche son immonde message d'erreur. Mais c'est peut-être au
niveau de onError() que je peux l'éviter (... et comme je suis pas
arrivé à l'implémenter, ben, je peux pas vérifier..., peut-être
pourras-tu me dire où ça coince ?).
Autre remarque : comme il n'y a pas de méthode dans la dbo_* pour
récupérer le code erreur, mon code est "générique" jusqu'au
mysql_errno... car là, je suis "ficellé" avec mysql...
Mais après tout, rien ne m'empêche de créer une méthode dans MON
app_model qui récupère l'erreur sql.
Quant à créer des contraintes dans la base, tu prêches un convaincu ! Je
suis effaré de voir combien de personnes proposent comme solution au
problème que j'ai levé dans ce post, d'utiliser simplement "IsUnique()"
ou d'autres méthodes à lancer avant la sauvegarde ! A croire qu'ils
n'ont jamais développé des applications multi utilisateurs, ou qu'ils
n'ont qu'un utilisateur connecté à la fois !
Pire, certains même engueule celui qui pose la question en lui
rétorquant que s'il en est à tester les erreurs sql, c'est que son appli
est mal foutue !!!
Bref, merci de ton aide et j'espère t'avoir aidé aussi ;)
--~--~---------~--~----~------------~-------~--~----~
Groupe "Cakephp-fr".
Adresse : [email protected]
Pour résilier : [EMAIL PROTECTED]
Pour les options : http://groups.google.com/group/cakephp-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---