Вы можете посмотреть beforeSave()
метод для моделей
http://book.cakephp.org/view/1052/beforeSave
представленные данные доступны в массиве $this->data[$this->alias]
, поэтому вы можете
foreach($this->data[$this->alias] as $k => $v) {
$this->data[$this->alias][$k] = Sanitize::clean($v);
}
Обычно вы хотите хранить все, что было отправлено пользователем в базу данных, и очищать его только тогда, когда вам нужно его отобразить, таким образом, вы все равно сохраняете исходное содержимое HTML (если оно действительно предназначено для ввода HTML (например, блог).post)).
Если вы хотите выполнить Sanitize перед отображением, вы можете сделать это с помощью afterFind()
, чтобы вам не приходилось каждый раз вызывать Sanitize.
http://book.cakephp.org/view/1050/afterFind
function afterFind($results, $primary) {
$toSanitize = array('field1', 'field2', 'field4');
if(!empty($results[0])) {
foreach($results as $i => $res) {
foreach($toSanitize as $ts) {
if(!empty($res[$this->alias][$ts]))
$results[$i][$this->alias][$ts] = Sanitize::clean($res[$this->alias][$ts]);
}
}
}
} else {
foreach($toSanitize as $ts) {
if(!empty($results[$ts]))
$results[$ts] = Sanitize::clean($results[$ts]);
}
}
}
return $results;
}