davethegr8 davethegr8 - 1 year ago 46
PHP Question

Cakephp: How would I route all missing controller/action calls to a single, general error page?

I've got a cakephp app that I'm trying to get to serve up the

function (and corresponding view) whenever Cake encounters any error (missing controller, action, etc).

What's the best way to do that?

Answer Source

Cake automatically throws a 404 error for missing methods or controllers. While in debug mode, this error takes the form of a detailed error message containing instructions, like:

Missing Controller

Error: FooController could not be found.

Error: Create the class FooController below in file: > app/controllers/foo_controller.php

Notice: If you want to customize this error message, create app/views/errors/missing_controller.ctp

In production mode (debug = 0) the message just looks like this:

Not Found

Error: The requested address '/foo' was not found on this server.

These error pages are defined in cake/libs/view/errors/. As the message in debug mode says, you can create your own, custom error pages (using the same name as the ones in the cake/ directory) in app/views/errors/.

If you want to execute a custom function on errors, you'll best put it in the AppError Controller as described in Error Handling.