Вопрос

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

Это было полезно?

Решение

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

Я думаю, тебе следует:

  • Используйте тот же действие контроллера, если это не запутано для пользователей и администраторов
  • Отображение поля ввода только в том случае, если пользователь является администратором, и выведите текст для других пользователей
  • Проверьте авторизацию в контроллере

Другие советы

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

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

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

if (hasRoleAdmin) {
 echo $this->Form->input(...);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top