Помогите С Валидацией

Ситуация следующая. У меня в ТБД есть два поля. Первое - body, второе - marked_body. В первое поле пишутся данные с markdown разметкой, которые прогоняются по функции htmlspecialchars, объявленной в rules таким образом


array('body','filter','filter'=>'htmlspecialchars'),

В поле marked_body я пишу данные из $_POST[‘body’], которые также прогоняю в экшене через htmlspecialchars а потом через метод transform() класса CMarkdownParser. Т.е. храню во втором поле разметку которую и отображаю потом. Но, что меня не устраивает, так это то, что и htmlspecialchars и transform я выполняю в экшене, а хотелось бы реализовать все так, чтоб сама модель выполняла эти действия, но увы, не могу понять как правильно прописать функцию-валидатор, которую потом и вызвать из rules.

Что-то для меня валидация модели оказалсь камнем преткновения, не могу понять как она работает.

Пожалуйста дайте примеры, если можно, то приближенные к моей задаче.

Заранее благодарю всех. Расчитываю на помощь.

ну вообще валидацаия должна либо "одобрить", либо "отвергнуть", а у вас скорее фильтр, вы можете в beforeSave, если юзаете ар проделать все манипуляции, либо:

‘body’, ‘myFunction’, ‘param’=>array(0,1)

function myFunction ($attribute, $param){

$body=$this->{$attribute}

if (isset($param[0]))$body=intval($body);

if (isset($param[1]))$body=(bool)$body;

$this->{$attribute}=$body;

}

примерно так, с доп проверками конечно и прочим, например $param is_array и т.д.

Спасибо.

Можно немного детализации? В функции attribute - это поле которое валидируется? А param - это просто флаги, указывающие, что именно в функции следует выполнить? Это единственое применение праметров, или могут быть другие варианты использования?

Извините за глупые вопросы, но сколько документацию не перечитываю - этот момент, т.е. все что связано с валидацией, уяснить не могу.

параметры передаете любые, это я как пример показал

и помоему там будет $param[‘param’]==array(0,1)

Спасибо. Вроде как начало что-то проясняться.