Сен 16 2008
Сообщения об ошибках в CakePHP
Вольный перевод заметки 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’), но предложенное решение более подходит к соглашениям Кейка.
Точно таким же образом можно выводить представления от других контроллеров, но я не рекомендую этого делать — можно сильно запутать код.