There are different ways to flash or publish the messages for a user action. Usability plays a major role in determining how the navigation pattern for a web application takes place.
- publishing the outcome of user action on the same page
- designing a single page to flash all success, error, warning, notice level messages
- designing a separate page for each message that gets published for the user
In CakePHP, to publish a message on the same page you need to make the following settings in the controller and view
In the controller
//app/controllers/posts_controller.php
<?php
function add(){
if ($this->Post->save($this->data)) {
$this->Session->setFlash(‘Your post has been saved.’);
$this->redirect(‘/posts’);
}
}
?>
In the view
//app/views/posts/add.ctp
<?php
if ($session->check(‘Message.flash’)){
$session->flash();
}
echo $content_for_layout;
?>
To design a single page to flash all success, error, warning, notice level messages follow the steps below
In the controller
//app/controllers/posts_controller.php
<?php
function add(){
if ($this->Post->save($this->data)) {
$this->Session->setFlash(‘Your post has been saved.’, ‘general’);
$this->redirect(‘/posts’);
}
} //end of add
?>
In the view
//app/views/layouts/general.ctp
<?php
echo “Message :: “.$content_for_layout;
?>
To design a separate page for each message, it is the same as the above step.But instead of one template file, you will have separate file layout file in /app/views/layout like error.ctp, warning.ctp, notice.ctp and custom design these pages to show the respective messages.