pictcode / lib / Cake / View / Helper / FlashHelper.php @ 6e557b3d
履歴 | 表示 | アノテート | ダウンロード (3.025 KB)
| 1 | 635eef61 | spyder1211 | <?php
 | 
      
|---|---|---|---|
| 2 | /**
 | 
      ||
| 3 |  * Flash Helper
 | 
      ||
| 4 |  *
 | 
      ||
| 5 |  * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 | 
      ||
| 6 |  * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 | 
      ||
| 7 |  *
 | 
      ||
| 8 |  * Licensed under The MIT License
 | 
      ||
| 9 |  * For full copyright and license information, please see the LICENSE.txt
 | 
      ||
| 10 |  * Redistributions of files must retain the above copyright notice.
 | 
      ||
| 11 |  *
 | 
      ||
| 12 |  * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 | 
      ||
| 13 |  * @link          http://cakephp.org CakePHP(tm) Project
 | 
      ||
| 14 |  * @package       Cake.View.Helper
 | 
      ||
| 15 |  * @since         CakePHP(tm) v 2.7.0-dev
 | 
      ||
| 16 |  * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 | 
      ||
| 17 |  */
 | 
      ||
| 18 | |||
| 19 | App::uses('AppHelper', 'View/Helper');  | 
      ||
| 20 | App::uses('CakeSession', 'Model/Datasource');  | 
      ||
| 21 | |||
| 22 | /**
 | 
      ||
| 23 |  * FlashHelper class to render flash messages.
 | 
      ||
| 24 |  *
 | 
      ||
| 25 |  * After setting messages in your controllers with FlashComponent, you can use
 | 
      ||
| 26 |  * this class to output your flash messages in your views.
 | 
      ||
| 27 |  *
 | 
      ||
| 28 |  * @package       Cake.View.Helper
 | 
      ||
| 29 |  */
 | 
      ||
| 30 | class FlashHelper extends AppHelper {  | 
      ||
| 31 | |||
| 32 | /**
 | 
      ||
| 33 |  * Used to render the message set in FlashComponent::set()
 | 
      ||
| 34 |  *
 | 
      ||
| 35 |  * In your view: $this->Flash->render('somekey');
 | 
      ||
| 36 |  * Will default to flash if no param is passed
 | 
      ||
| 37 |  *
 | 
      ||
| 38 |  * You can pass additional information into the flash message generation. This allows you
 | 
      ||
| 39 |  * to consolidate all the parameters for a given type of flash message into the view.
 | 
      ||
| 40 |  *
 | 
      ||
| 41 |  * ```
 | 
      ||
| 42 |  * echo $this->Flash->render('flash', array('params' => array('name' => $user['User']['name'])));
 | 
      ||
| 43 |  * ```
 | 
      ||
| 44 |  *
 | 
      ||
| 45 |  * This would pass the current user's name into the flash message, so you could create personalized
 | 
      ||
| 46 |  * messages without the controller needing access to that data.
 | 
      ||
| 47 |  *
 | 
      ||
| 48 |  * Lastly you can choose the element that is used for rendering the flash message. Using
 | 
      ||
| 49 |  * custom elements allows you to fully customize how flash messages are generated.
 | 
      ||
| 50 |  *
 | 
      ||
| 51 |  * ```
 | 
      ||
| 52 |  * echo $this->Flash->render('flash', array('element' => 'my_custom_element'));
 | 
      ||
| 53 |  * ```
 | 
      ||
| 54 |  *
 | 
      ||
| 55 |  * If you want to use an element from a plugin for rendering your flash message
 | 
      ||
| 56 |  * you can use the dot notation for the plugin's element name:
 | 
      ||
| 57 |  *
 | 
      ||
| 58 |  * ```
 | 
      ||
| 59 |  * echo $this->Flash->render('flash', array(
 | 
      ||
| 60 |  *   'element' => 'MyPlugin.my_custom_element',
 | 
      ||
| 61 |  * ));
 | 
      ||
| 62 |  * ```
 | 
      ||
| 63 |  *
 | 
      ||
| 64 |  * @param string $key The [Message.]key you are rendering in the view.
 | 
      ||
| 65 |  * @param array $options Additional options to use for the creation of this flash message.
 | 
      ||
| 66 |  *    Supports the 'params', and 'element' keys that are used in the helper.
 | 
      ||
| 67 |  * @return string|null Rendered flash message or null if flash key does not exist
 | 
      ||
| 68 |  *   in session.
 | 
      ||
| 69 |  * @throws UnexpectedValueException If value for flash settings key is not an array.
 | 
      ||
| 70 |  */
 | 
      ||
| 71 | public function render($key = 'flash', $options = array()) {  | 
      ||
| 72 | if (!CakeSession::check("Message.$key")) {  | 
      ||
| 73 | return null;  | 
      ||
| 74 | }  | 
      ||
| 75 | |||
| 76 | $flash = CakeSession::read("Message.$key");  | 
      ||
| 77 | |||
| 78 | if (!is_array($flash)) {  | 
      ||
| 79 | throw new UnexpectedValueException(sprintf(  | 
      ||
| 80 |                                 'Value for flash setting key "%s" must be an array.',
 | 
      ||
| 81 |                                 $key
 | 
      ||
| 82 | ));  | 
      ||
| 83 | }  | 
      ||
| 84 | |||
| 85 | $flash = $options + $flash;  | 
      ||
| 86 | CakeSession::delete("Message.$key");  | 
      ||
| 87 | $flash['key'] = $key;  | 
      ||
| 88 | |||
| 89 | return $this->_View->element($flash['element'], $flash);  | 
      ||
| 90 | }  | 
      ||
| 91 | }  |