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 control
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:)
Please add a class PostController.php not post_controller.php in the app/controller folder. It just mean that You have to create as like its class name.
Step 1:In app_controller.php add two functions
function _setErrorLayout() {
if ($this->name == 'CakeError') {
$this->layout = 'error';
}
}
function beforeRender () {
$this->_setErrorLayout();
}
}
Step2: In views\layouts\
create error.ctp
containing echo $content_for_layout;
step:3 In views\errors\
make missing_action.ctp
and customize the page as you need
my PHP code was:
echo $html->image('404-not-found-1-3.jpg');
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.