CakePhp: сделать только администратор Datafield
-
27-09-2019 - |
Вопрос
В моем модели данных у меня есть поле, которое должно быть только редактируемым. Нормальные пользователи могут редактировать записи в модели и просматривать это конкретное поле, но они не должны быть в состоянии его редактировать. Есть ли простой / чистый подход к этому? Я предполагаю, что необходимо создать дополнительное действие контроллера Admin_Edit, но какой лучший способ «заблокировать» поле данных в контроллере?
Решение
Не нужно создавать новое действие контроллера, но вы можете решить так. Обратите внимание, что вы все еще можете использовать тот же просмотр для него, используя $this->render("edit")
видеть: http://book.cakephp.org/view/428/render.
Я думаю, тебе следует:
- Используйте тот же действие контроллера, если это не запутано для пользователей и администраторов
- Отображение поля ввода только в том случае, если пользователь является администратором, и выведите текст для других пользователей
- Проверьте авторизацию в контроллере
Другие советы
В зависимости от вашей настройки это может быть легко обрабатывается как метод проверки в модели. Напишите пользовательскую функцию в модели, чтобы проверить, имеет ли у пользователя разрешение.
Вы также можете сделать это в модели с BeForeSave (). Если поле там, и у них нет разрешения, удалите его.
Вы можете искоренить на роли администратора в редактировании
if (hasRoleAdmin) {
echo $this->Form->input(...);
}