beforeUpdate
В качестве защиты от дурака хочу запретить редактирование index страницы в Pages. Попробовал использовать метод beforeUpdate в соответствии с документацией, однако обновление URL без проблем происходит. Что я делаю не так?
protected function beforeUpdate($id,$old_fields,$new_fields) { if($old_fields["url"]=="index") return $new_fields["url"]="index"; }
Попробуйте так
if($old_fields["url"] == "index") { $new_fields["url"] = "index"; return $new_fields; }
Спасибо, сработало.
Подскажите, а можно как-то предотвратить обнуление полей, которые обозначены в модели как hidden_fields, при обновлении записи?
Пока решаю вопрос так... см.код может есть ещё варианты?
$entry=$this->selectOne(array("id"=>$id)); $new_fields['password']=$entry['password'];
А они и не должны обнуляться, напишите пожалуйста такие моменты:
1. версию MV
2. обновление идет из админки или frontend? если frontend то через модель или record?
3. поле у вас записано в not_editable_fields?
1) 1.8
2) Обновление из админки
3) Не записано
Объясню на примере... Есть модель Posts, в ней есть поле Views (в него заносится количество просмотров). В backend поле скрыто через hidden_fields. При обновлении модели оно обнуляется. Пока спасаемся вот такой конструкцией.....
protected function beforeUpdate($id,$old_fields,$new_fields) { $entry=$this->selectOne(array("id"=>$id)); return array("views"=>$entry['views']); }
Добавьте поле views в модели еще в массив not_editable_fields и оно перестанет участвовать в обновлении в админке, но его можно будет обновлять на frontend через Record
Не догадался. Спасибо.