Walidacja Modelu Podczas Tworzenia

Witam, mam mały problem z walidacją modelu.

W rules posiadam wymagane pola :


 array('name, czas_od, czas_do, szablon', 'required'),

Podczas tworzenia nowego modelu, gdy nacisnę sam przycisk save, to przerzuca mnie na strone "index" danego modelu, nie robi walidacji i nie wyrzuca błedów.

Gdy dam:


var_dump($model->getErrors());

die();

wtedy dostaję:




array (size=4)

  'name' => 

    array (size=1)

      0 => string 'Nazwa stanowiska cannot be blank.' (length=33)

  'czas_od' => 

    array (size=1)

      0 => string 'Czas od cannot be blank.' (length=24)

  'czas_do' => 

    array (size=1)

      0 => string 'Czas do cannot be blank.' (length=24)

  'szablon' => 

    array (size=1)

      0 => string 'Szablon cannot be blank.' (length=24)

I gdy wpisze wszystkie pola i zapiszę to model normalnie zapisuje do bazy, chodzi o sam fakt walidacji podczas gdy pola sa puste. Nie waliduje, dla czego?

Cześć

w api masz napisane:




public function save($runValidation=true,$attributes=null)

{

if(!$runValidation || $this->validate($attributes))

return $this->getIsNewRecord() ? $this->insert($attributes) : $this->update($attributes);

else

return false;

}



więc walidacja jest robiona, ale funkcja zwraca false, więc jeżeli chcesz zapisać model bez walidowania to zrób tak, lub wykorzystaj wartość zwracaną przez metodę do odpowiedniej reakcji:


$model->save(false);

dodatkowo możesz nadpisać poniższe metody w AR, żeby odpowiednio zareagować na model bez atrybutów w wymaganych przez Ciebie okolicznościach:


public function beforeSave() {

    return true; //wymagane

}


public function afterFind() {

    return true; //wymagane

}

Błędy walidowania musisz pobrać sam metodą getErrors(), to tak na szybko.

Pokaż jak wygląda kod akcji tworzenia wpisu.

W przykładzie poniżej w 5 linii jest kluczowy element. Jeżeli nie masz tego warunku lub, jeżeli jest zmodyfikowany w zły sposób, to zostajesz przekierowany do podglądu.




$model=new Property;

if(isset($_POST['Property']))

{

  $model->attributes=$_POST['Property'];

  if($model->save())

  $this->redirect(array('view','id'=>$model->id));

}


$this->render('create',array(

  'model'=>$model,

));

Brakowało mi warunku if($model->save()) {

:)