davethegr8 davethegr8 - 4 months ago 18
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

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

What's the best way to do that?

Answer

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.