bonsoir j'ai suivi le tuto du blog en cakePHP tous fonctionne j'arrive bien à faire tous les opération à par le contrôle avant de sauver le contenu dans ma base de donnée avec la fonction "beforeSave" là il y a une erreur j'ai essayé avec clean , html mais aucune des 2 fonctionne voici mon code si vous pouvez m'aider merci d'avance

function beforeSave() {
            App::import('Sanitise');

             $this->data'Comment']'contenu'] = Sanitize::html($this->data'Comment']'contenu']);
            return true;
        }

7 réponses


Maenhyr
Réponse acceptée

Le beforeSave se lance après validate() et avant save(). Il faut que tu mettes,le sanitize dans la fonction beforeSave comme tu l'avais fais. Il y a juste des erreurs lors du chargement de la classe. Fais un debug sur le import.

http://book.cakephp.org/2.0/en/core-utility-libraries/sanitize.html

Ton import n'est pas complet. Remplace le par :

App::uses('Sanitize', 'Utility');

Et là ça va marcher.

merci pour la réponse mais cela ne fonctionne pas non plus!
j'utilise netbean avec mon code en cakePHP et le logiciel me met un bouton vert à coté de la fonction befoforeSave et quand je clic dessus il me dit qu'il y a un model sous le dossier cake "overrides method from Model(model.php)" j'ai voulu le retirer mais alors je n'avait plus rien à l'écran dont je suppose que celui là gère tous les modèles mais alors je ne sais pas ce que je dois faire pour que la fonction marche peut-être ajouter la fonction dans le fichier Model du dossier cake?
merci pour votre aide

voila j'ai peut-être trouver j'ai pris la fonction du model.php qui ce trouve sous cake maintenant si j'essaye de envoyer du code javaScript il ne l'affiche pas mais l'enregistre comme simple texte dans ma base de donnée voici la fonction

public function beforeValidate($a = array()) {
        return true;
    }

seulement du code html lui passe que puis-je faire pour résoudre ce problème?

Oulala j'ai l'impression que tu vas faire des bêtises! Ne JAMAIS modifier le dossier cake. As tu crée un fichier AppModel.php qui étend de Model? Dans quel Model as tu mis ton beforeSave? Ce Model etend il AppModel?

je n'ai pas changer le modèle de cake , j'ai juste copier la fonction dans le modèle que j'ai créer moi-même il y avait déjà un fichier AppModel.php celui là je n'y ai pas toucher non plus, maintenant ça fonctionne seulement si dans mon champs contenu je met du code html là cela passe et on peut toujours mettre en gras ou autre

merci ça fonctionne maintenant j'ai remis comme avant la fonction beforeSave() dans mon modèle et dans mon controleur j'ai mis App::uses('Sanitize','Ulity')