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
Не догадался. Спасибо.