2010-09-29 5 views
1

В недавней версии cakePHP 1.3.4 я обнаружил, что Sanitize :: html возвращает двойные кодированные html-объекты - из-за недавно добавленного четвертого параметра hvmlentities double_encode.cakePHP: Overload Sanitize

Вот соответствующий билет на CakePHP: http://cakephp.lighthouseapp.com/projects/42648/tickets/1152-sanitizehtml-needs-double_encode-parameter-in-htmlentities

Поскольку мне нужно использовать CakePHP 1.3.4 на PHP 5.2.14 мне нужно изменить параметр double_encode. Есть ли способ перегрузить метод Sanitize :: html в торте, поэтому мне не нужно возиться с ядром?

ответ

2

Вы можете унаследовать его в каталоге /app/libs:

App::import('Sanitize'); 

class MySanitize extends Sanitize { 

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

} 

Вы должны переключиться использовать MySanitize вместо Sanitize, но это не должно быть большой проблемой. Текст find/replace может позаботиться об этом, если вы его уже много используете.

+0

Большое спасибо - подклассы это: –

+0

Кстати, это хороший пример того, почему статические вызовы методов - это плохая практика. При правильной инъекции зависимостей вам не придется заменять все экземпляры ... Торт беспорядок, действительно. – deceze