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?
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?
Are you in the controller when you are trying to redirect to the 404 error page?
Well if that is the case, you can walk around the problem like this:
Copy and paste the error layout (error404.ctp) from the cake core library directory into yours app/views/errors/
Then add the following line whenever you encounter an error inside a controller.
$this->cakeError('error404',array(array('url'=>'/')));
Oh, another way to handle this is to edit the routes.php file in app/config
CakePHP Official site Routes-Configuration
I don't have a working copy of CakePHP at the moment, so I would just describe the basic logic here(what you can do inside the routes.php file)
Redirect traffic with specific url patterns(say, http://yourwebsite/validController/validFunction/validParam) to their corresponding destinations respectively. Redirect all other traffic (missing controller, model, view, etc) to 404 page.
Hope that helps:)
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.