2010-09-29 26 views
1

Dans la version récente de cakePHP 1.3.4, j'ai découvert que Sanitize :: html renvoyait des entités html à double codage - à cause du quatrième paramètre nouvellement ajouté de htmlentities 'double_encode'.cakePHP: Overload Sanitize

Voici un billet correspondant sur CakePHP: http://cakephp.lighthouseapp.com/projects/42648/tickets/1152-sanitizehtml-needs-double_encode-parameter-in-htmlentities

Depuis que je dois utiliser CakePHP 1.3.4 sur PHP 5.2.14 Je dois changer le paramètre double_encode. Existe-t-il un moyen de surcharger la méthode Sanitize :: html dans le gâteau afin de ne pas avoir à tripoter le noyau?

Répondre

2

Vous pouvez sous-classe dans le répertoire /app/libs:

App::import('Sanitize'); 

class MySanitize extends Sanitize { 

    public static function html(...) { 
     ... 
    } 

} 

Vous devez passer à utiliser MySanitize au lieu de Sanitize, mais cela ne devrait pas être un gros problème. Une recherche/remplacement de texte peut en prendre soin si vous l'utilisez déjà beaucoup.

+0

Merci beaucoup - sousclassé c'est :) –

+0

BTW, 't est un bon exemple de pourquoi les appels de méthodes statiques sont une mauvaise pratique. Avec une injection de dépendances appropriée, vous ne devrez pas remplacer toutes les instances ... Cake est un gâchis, vraiment. – deceze