CakePHP: сделать поле данных доступным только для редактирования - PullRequest
3 голосов
/ 01 октября 2010

В моей модели данных есть поле, которое должно редактироваться только администратором.Обычные пользователи могут редактировать записи в модели и просматривать это конкретное поле, но они не должны иметь возможности редактировать его.Есть ли простой / чистый подход для этого?Я думаю, что необходимо создать дополнительное действие контроллера admin_edit, но каков наилучший способ «заблокировать» поле данных в контроллере?

Ответы [ 3 ]

2 голосов
/ 01 октября 2010

Нет необходимости создавать новое действие контроллера, но вы можете решить это.Обратите внимание, что вы все еще можете использовать тот же вид для него, используя $this->render("edit") см .: http://book.cakephp.org/view/428/render

Я думаю, вы должны:

  • использовать то же действие контроллера, еслиэто не смущает пользователей и администраторов
  • отображать поле ввода только в том случае, если пользователь является администратором, и выводить текст для других пользователей
  • проверить авторизацию в контроллере
1 голос
/ 01 октября 2010

В зависимости от вашей настройки, это может быть легко обработано как метод проверки в модели. Напишите пользовательскую функцию в модели, чтобы проверить, есть ли у пользователя разрешение.

Вы также можете сделать это в модели с beforeSave (). Если поле есть и у него нет разрешения, удалите его.

0 голосов
/ 01 октября 2010

Вы можете одновременно проверить роль администратора в представлении редактирования

if (hasRoleAdmin) {
 echo $this->Form->input(...);
}
...