Сен 16 2008

Сообщения об ошибках в CakePHP

Раздел: Веб-разработкаМета @ 22:44

Вольный перевод заметки Felix Geisendörfer Dessert #8 - Render custom errors.

Наверное вы уже замечали папку /app/views/errors/ и знаете, что можете использовать ее для переопределения стандартных шаблонов для сообщений об ошибках из папки /cake/libs/view/errors/. Вот их полный список:

  • error404.ctp
  • missing_action.ctp
  • missing_component_class.ctp
  • missing_component_file.ctp
  • missing_connection.ctp
  • missing_controller.ctp
  • missing_helper_class.ctp
  • missing_helper_file.ctp
  • missing_layout.ctp
  • missing_model.ctp
  • missing_scaffolddb.ctp
  • missing_table.ctp
  • missing_view.ctp
  • private_action.ctp
  • scaffold_error.ctp

Для замены стандартного шаблона просто создайте файл с соответствующим именем в папке /app/views/errors/.

Но вы еще не знаете (или раньше не использовали) о возможности размещения в этой папке шаблонов для собственных ошибок вашего приложения. Например, если у вас есть функция, для доступа к которой у пользователя должны быть соответствующие права, то можно создать файл /app/views/errors/permission_denied.ctp и выводить его содержимое — сообщение об ошибке — если у пользователя недостаточно прав.

1
2
$this->viewPath = 'errors';
$this->render('permission_denied');

Конечно, можно и просто написать $this->render(’../errors/permission_denied’), но предложенное решение более подходит к соглашениям Кейка.

Точно таким же образом можно выводить представления от других контроллеров, но я не рекомендую этого делать — можно сильно запутать код.

Теги: , ,

Напиши комментарий!