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?
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.
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.