He leído que la clase AppError ahora es compatible con versiones anteriores y que en su lugar deberían usarse Excepciones. ¿Cómo se puede crear páginas de error personalizadas para cosas como errores 404 o errores completamente personalizados?CakePHP 2.0 - ¿Cómo crear páginas de error personalizadas?
Respuesta
Prueba esto:
/app/config/core.php
Excepción render necesidad de establecer como un AppExceptionRender
. Ejemplo:
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'));
}
}
/app/Vista/Errores/error404. ctp
<div class="inner404">
<h2>404 Error - Page Not Found</h2>
</div>
Insértelo donde necesite: throw new NotFoundException();
Puede crear CustomErrorPages
o Exeptions
simplemente creando un class
de su error que se va a mostrar. Esta clase necesita extenderse CakeExeption
. Luego construye tu exeptionlogic y tu conjunto. Ahora puede simplemente throw new <YourExeptionClass>()
y se mostrará un error.
Documentación: CakeExceptions
¿Pero cuándo arrojaría ese error para un 404? Quiero decir, ¿cómo se puede personalizar la página 404 de la aplicación ahora? – BadHorsie
Para personalizar el contenido de una página de error 404 y no necesita lógica personalizada, simplemente edite los contenidos de app/View/Errors/error400.ctp
.
Esto parece no estar documentado correctamente en ninguna parte.
¡Muchas gracias, señor! –
Lanzar una excepción es suficiente para cargar esta página de error - 'throw new NotFoundException();' –
Necesita más votos ascendentes ... tome el mío;) – Karma
Crear un diseño con el nombre 404 o cualquier cosa y utilizar en el controlador aplicación
function _setErrorLayout() {
if ($this->name == 'CakeError') {
$this->layout = '404';
}
}
function beforeRender() {
$this->_setErrorLayout();
}
Si estás buscando solamente usar otra disposición en lugar del predeterminado, sólo tiene que añadir $this->layout = 'your_error_layout';
dentro de su error400.ctp (o cualquier otra página de error que cree en Ver/Errores).
La respuesta aceptada no es la mejor opción porque redirigen la url de su navegador a http://example.com.br/error/error404
y el usuario no puede seguir la página que ha cometido para generar este error.
La mejor manera de manejar esta situación es editar el archivo en View/Errors/error400.ctp
, por lo que cuando se introduce una URL que no se encuentra como http:example.com/crazy-wrong-url
, el navegador va a mantener esta url sino representar el contenido del archivo error400.ctp
que edite.
Si desea cambiar la disposición de que la vista se representará puede escribir esto en su vista <?php $this->layout = 'error'; ?>
había descubierto hoy que es posible obtener el código en el archivo excpetion CTP usando $error->getCode()
(en CakePHP 2.x, al menos).
El $error
es donde Cake pone el objeto de excepción ...
Ahora debería poder cambiar el contenido de su vista con un bloque condicional if/else
, basado en este valor.
- 1. AmazonS3: páginas de error personalizadas
- 2. ¿Desencadenar un error 404 con CakePHP 2.0?
- 3. Cómo enviar a páginas de error personalizadas Zend Framework?
- 4. Cómo crear páginas de error personalizadas con app.yaml para Google Appengine Python
- 5. Cómo crear páginas de error 404 personalizadas en ASP.NET MVC 3?
- 6. páginas de error personalizadas en diferentes áreas en ASP.NET MvC3
- 7. nginx + uwsgi + matraz - deshabilitar páginas de error personalizadas
- 8. Páginas de error personalizadas con plantillas en CodeIgniter
- 9. IIS 7.0 no muestra páginas de error personalizadas
- 10. MVC3 páginas de error personalizadas dan resultado en blanco
- 11. MVC InvalidOperationException con las páginas de error personalizadas
- 12. Cakephp 2.0 aut. De simulación
- 13. CakePHP 2.0 con Twitter Bootstrap
- 14. Cómo crear una página estática en cakephp?
- 15. Pruebas de integración en CakePHP 2.0
- 16. Cargando archivos de proveedores en CakePHP 2.0
- 17. ¿Cómo crear etiquetas javadoc personalizadas?
- 18. Cakephp: ¿cómo hacer que las páginas de error tengan sus propios diseños?
- 19. Crear anotaciones personalizadas
- 20. ¿Cómo eliminar auth del controlador de páginas en CakePHP?
- 21. CakePHP: ¿incluye CSS basado en páginas específicas?
- 22. cómo crear carriles 3 excepciones personalizadas
- 23. CakePHP 2.0.x: ACL: ¿Grupos Múltiples?
- 24. CakePHP crear botones de radio
- 25. doble guión bajo en cakephp 2.0
- 26. Crear API usando CakePHP
- 27. ELMAH - Uso de páginas de error personalizadas para recopilar comentarios de los usuarios
- 28. ¿Cómo crear un Sitemap para CakePHP?
- 29. Cómo crear directivas personalizadas en Sphinx
- 30. Cómo crear funciones personalizadas en SQLite
Además, para que esto funcione, debe especificar el representador de excepción como 'AppExceptionRenderer' en el archivo core.php. –
Gracias @JonathanCairns, olvidé mencionar ese matiz. Agregado al ejemplo de código. –
Gracias, esto funciona. Si solo desea personalizar el contenido de su página y no necesita una lógica personalizada, es suficiente omitir la creación de un controlador de errores designado y redireccionar al controlador de páginas en su AppExceptionRenderer. – bfncs