что бы заработал механизм
форма - валидация данных - база данных делаем так:
1. в модели
[tt] protected function beforeValidate($on)
{
$result = true;
if (isset($_POST['News']['dat'])) { //дата вводится в формате "dd.mm.yyyy"
list($d['dd'], $d['mm'], $d['yy']) = explode('.', $_POST['News']['dat']);
if (checkdate($d['mm'], $d['dd'], $d['yy'])) { //проверка корректности даты
$this->dat = $d['yy'] .'-'. $d['mm'] .'-'. $d['dd']; //переделать в фотмат mysql "yyyy-mm-dd"
}
else {
$this->addError('News date','Incorrect date.'); //ОШИБКА!!!
$result = false;
}
}
return $result;
}[/tt]
2. в контроллере
[tt] public function actionAdd() {
if(isset($_POST['News'])) {
$rec = new News;
$rec->attributes = $_POST['News'];
$rec->save; //тут срабатывает beforeValidate() модели
if($rec->hasErrors()) {
//вызвать представление и передать туда ошибку $this->render('form',array('errorSummary'=>CHtml::errorSummary($rec),'row'=>$_POST['News']));
return;
}
$this->redirect(array('edit','id'=>$rec->id);
}
$this->render('form');
}[/tt]
3. в представлении
[tt] if (isset($errorSummary)) {
echo $errorSummary;
}[/tt]