Я прочитал, что класс AppError теперь имеет обратную совместимость и что вместо этого следует использовать Исключения. Как можно создавать собственные страницы ошибок для таких вещей, как ошибки 404 или полностью пользовательские ошибки?CakePHP 2.0 - Как создать пользовательские страницы ошибок?
ответ
Попробуйте это:
/app/config/core.php
Исключение делают необходимость установить в качестве AppExceptionRender
. Пример:
Configure::write('Exception', array(
'handler' => 'ErrorHandler::handleException',
'renderer' => 'AppExceptionRenderer',
'log' => true
));
/app/Controller/ErrorsController.php
class ErrorsController extends AppController {
public $name = 'Errors';
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('error404');
}
public function error404() {
//$this->layout = 'default';
}
}
/app/Lib/Error/AppExceptionRenderer.php
App::uses('ExceptionRenderer', 'Error');
class AppExceptionRenderer extends ExceptionRenderer {
public function notFound($error) {
$this->controller->redirect(array('controller' => 'errors', 'action' => 'error404'));
}
}
/приложение/View/Ошибки/error404. ctp
<div class="inner404">
<h2>404 Error - Page Not Found</h2>
</div>
Вставьте его там, где вам нужно: throw new NotFoundException();
Вы можете создать CustomErrorPages
или Exeptions
, создав объект в своем объявлении class
. Этот класс должен распространяться на CakeExeption
. Затем создайте свой exeptionlogic и ваш набор. Теперь вы можете просто throw new <YourExeptionClass>()
, и на экране отобразится ошибка.
Документация: CakeExceptions
Но когда бы я выбрал эту ошибку для 404? Я имею в виду, как настроить страницу приложения на 404 сейчас? – BadHorsie
Чтобы настроить содержимое страницы с ошибкой 404 и не нужно настраивать логику, просто отредактируйте содержимое app/View/Errors/error400.ctp
.
Это, кажется, нигде не задокументировано.
Спасибо, сэр! –
Для того, чтобы загрузить эту страницу с ошибкой, достаточно выбросить ошибку - 'throw new NotFoundException();' –
Вам нужно больше upvotes .. take mine;) – Karma
Создание макета с именем 404 или что-то и использовать в контроллере
function _setErrorLayout() {
if ($this->name == 'CakeError') {
$this->layout = '404';
}
}
function beforeRender() {
$this->_setErrorLayout();
}
приложение Если вы только хотите использовать другую раскладку вместо стандартного, просто добавьте $this->layout = 'your_error_layout';
внутри error400.ctp (или любую другую страницу ошибок, которую вы создаете в разделе «Просмотр/ошибки»).
Принимаемый ответ не самый лучший вариант, поскольку они перенаправляют URL-адрес вашего браузера на http://example.com.br/error/error404
, и пользователь не может следить за тем, какую страницу он ввел для создания этой ошибки.
Лучший способ справиться с этой ситуацией является редактирование файла на View/Errors/error400.ctp
, поэтому, когда вы вводите не найден URL, как http:example.com/crazy-wrong-url
, браузер будет держать этот адрес, но делают содержимое error400.ctp
файла, который вы редактируете.
Если вы хотите изменить расположение, что вид будет оказано вы можете напечатать это на ваш взгляд <?php $this->layout = 'error'; ?>
обнаружил сегодня, что можно получить код excpetion в файле CTP с использованием $error->getCode()
(в CakePHP 2.x, как минимум).
$error
был Cake помещает объект исключения ...
Теперь вы должны иметь возможность изменять содержимое своего вида с помощью условного блока if/else
, основанного на этом значении.
- 1. Пользовательские страницы ошибок не показывает
- 2. Как создать пользовательские страницы ошибок компиляции в формате play2.0?
- 3. 500 Пользовательские страницы ошибок
- 4. Как создать страницы CakePHP
- 5. Как создать пользовательские 404 страницы ошибок в ASP.NET MVC 3?
- 6. Пользовательские страницы ошибок в servicestack
- 7. пользовательские страницы ошибок в MVC
- 8. Пользовательские страницы ошибок с макетом
- 9. CloudBees и пользовательские страницы ошибок
- 10. Classic ASP - Пользовательские страницы ошибок
- 11. Пользовательские страницы ошибок в JBoss
- 12. Google 404 и .NET Пользовательские страницы ошибок
- 13. Как создать пользовательские запросы MySQL в CakePHP?
- 14. Как создать пользовательские URL-адреса в cakephp
- 15. Как перенаправить пользовательские страницы ошибок - с URL пользовательских ошибок
- 16. CakePHP 2.0+ просмотров пользовательских ошибок с помощью исключений
- 17. Heroku не отображать пользовательские страницы ошибок
- 18. Пользовательские страницы ошибок для django-cms
- 19. Сохранение определенных переменных после ошибок проверки модели в cakephp 2.0
- 20. CakePHP: разбиение на страницы и пользовательские маршруты
- 21. Пользовательские представления на наличие ошибок в CakePHP 2,1
- 22. ASP.NET Пользовательские страницы ошибок возвращает 500
- 23. Пользовательские страницы ошибок HTTP для изображений?
- 24. Пользовательские страницы ошибок в Reporting Services 2008
- 25. Пользовательские страницы ошибок только для среды PROD?
- 26. Rendering пользовательские страницы ошибок от администратора имен
- 27. Cakephp 2.0 mock auth
- 28. Пользовательские страницы ошибок с помощью Джанго 1.10
- 29. Heroku: можно отключить пользовательские страницы ошибок?
- 30. Пользовательские страницы ошибок в MVC не обслуживаются
Кроме того, чтобы заставить это работать, вам нужно указать средство визуализации Exception как «AppExceptionRenderer» в файле core.php. –
Спасибо @ JonathanCairns, я забыл упомянуть об этом нюансе. Добавлен пример кода. –
Спасибо, это работает. Если вы хотите только настроить содержимое своей страницы и не нуждаетесь в пользовательской логике, достаточно опустить создание назначенного контроллера erros и перенаправить на страницу-контроллер в свой AppExceptionRenderer. – bfncs