View_Helper_FlashMessages
1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 2021 22 23 24 2526 27 28 29 3031 32 33 34 3536 37 38 39 4041 42 43 44 4546 47 48 49 5051 52 53 54 5556 57 58 59 6061 62 63 64 6566 67 68 69 7071 72 73 74 7576 77 78 79 8081 82 83 84 8586 87 88 89 9091 92 93 94 9596 97 98 99 100101 102 103 104 105106 107 108 109 110111 112 113 114 115116 117 118 | <?php class App_View_Helper_FlashMessages { /** * flashMessages function. * * Takes a specially formatted array of flash messages and prepares them * for output. * * SAMPLE INPUT (in, say, a controller): * $this->_flashMessenger->addMessage(array('message' => 'Success message #1', 'status' => 'success')); * $this->_flashMessenger->addMessage(array('message' => 'Error message #1', 'status' => 'error')); * $this->_flashMessenger->addMessage(array('message' => 'Warning message #1', 'status' => 'warning')); * $this->_flashMessenger->addMessage(array('message' => 'Success message #2', 'status' => 'success')); * * OR * $this->_helper->flashMessanger->addMessage('sucess|Success message #1'); * $this->_helper->flashMessanger->addMessage('error|Error message #1'); * $this->_helper->flashMessanger->addMessage('warning|Warning message #1'); * $this->_helper->flashMessanger->addMessage('sucess|Sucess message #2'); * * SAMPLE OUTPUT (in a view): * <div class="success"> * <ul> * <li>Success message #1</li> * <li>Success message #2</li> * </ul> * </div> * <div class="error">Error message #1</div> * <div class="warning">Warning message #2</div> * * @access public * @param $translator An optional instance of Zend_Translate * @return string HTML of output messages */ public function flashMessages($translator = NULL) { // Set up some variables, including the retrieval of all flash messages. $messages = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger')->getMessages(); $statMessages = array(); $output = ''; // If there are no messages, don't bother with this whole process. if (count($messages) > 0) { // This chunk of code takes the messages (formatted as in the above sample // input) and puts them into an array of the form: // Array( // [status1] => Array( // [0] => "Message 1" // [1] => "Message 2" // ), // [status2] => Array( // [0] => "Message 1" // [1] => "Message 2" // ) // .... // ) foreach ($messages as $message) { // if message is not an array, but string formatted like this: // message_status|message if (! is_array($message)) { $message_tmp = explode("|", $message); $message = array(); if(sizeof($message_tmp) == 1){ // default status is info $message['status'] = 'info'; } else { $message['status'] = array_shift($message_tmp); } // if in message occured '|' characters we have to bring them back $message['message'] = implode("|", $message_tmp); } if (!array_key_exists($message['status'], $statMessages)) $statMessages[$message['status']] = array(); if ($translator != NULL && $translator instanceof Zend_Translate) array_push($statMessages[$message['status']], $translator->_($message['message'])); else array_push($statMessages[$message['status']], $message['message']); } // This chunk of code formats messages for HTML output (per // the example in the class comments). foreach ($statMessages as $status => $messages) { $output .= '<div class="' . $status . '">'; // If there is only one message to look at, we don't need to deal with // ul or li - just output the message into the div. if (count($messages) == 1) $output .= $messages[0]; // If there are more than one message, format it in the fashion of the // sample output above. else { $output .= '<ul>'; foreach ($messages as $message) $output .= '<li>' . $message . '</li>'; $output .= '</ul>'; } $output .= '</div>'; } // Return the final HTML string to use. return "<div id='sysMsg'>$output</div>"; } } } |
Comments
You must login before commenting on a snippet. If you do not have an account, please register.
Snippet description
Modified View Helper - http://www.zfsnippets.com/snippets/view/id/37
This is extended version of snippet above.
Now You can easly add messages with status provided like this:
$this->_helper->flashMessanger->addMessage('[status]|[Message]');
Examples:
$this->_helper->flashMessanger->addMessage('sucess|Success message #1');
$this->_helper->flashMessanger->addMessage('error|Error message #1');
$this->_helper->flashMessanger->addMessage('warning|Warning message #1');
$this->_helper->flashMessanger->addMessage('sucess|Sucess message #2');
If no status is provided message is displayed as 'Info'.
Snippet details
- Created:
-
gen.jusz
- Edited:
-
gen.jusz
- Revision Id:
- 208
- Edit Message:
- Initial Release
- ZF Version
- 1.10.7
- Tags:
- view helper flashmessanger
- Comments:
- 0
- Views:
- 1265
- Points:
- 1 (1 votes)