Browse Source

Refactor SessionHelper to use a string template.

Consistency across the helpers is important. Having SessionHelper use
templates like other helpers works to that end.
Mark Story 12 years ago
parent
commit
03428431a4
1 changed files with 33 additions and 3 deletions
  1. 33 3
      src/View/Helper/SessionHelper.php

+ 33 - 3
src/View/Helper/SessionHelper.php

@@ -18,6 +18,8 @@ namespace Cake\View\Helper;
 
 use Cake\Network\Session;
 use Cake\View\Helper;
+use Cake\View\Helper\StringTemplateTrait;
+use Cake\View\View;
 
 /**
  * Session Helper.
@@ -28,6 +30,30 @@ use Cake\View\Helper;
  */
 class SessionHelper extends Helper {
 
+	use StringTemplateTrait;
+
+/**
+ * Default templates to use.
+ *
+ * @var array
+ */
+	protected $_defaultTemplates = [
+		'flash' => '<div id="{{key}}Message" class="{{class}}">{{message}}</div>'
+	];
+
+/**
+ * Construct the helper and sets up templates
+ *
+ * @param \Cake\View\View $view The View this helper is being attached to.
+ * @param array $settings Configuration settings for the helper.
+ */
+	public function __construct(View $view, $settings = []) {
+		$settings += ['templates' => null];
+		parent::__construct($view, $settings);
+
+		$this->initStringTemplates($this->_defaultTemplates);
+	}
+
 /**
  * Used to read a session values set in a controller for a key or return values for all keys.
  *
@@ -103,8 +129,8 @@ class SessionHelper extends Helper {
  *
  * {{{
  * echo $this->Session->flash('flash', array(
- *		'element' => 'my_custom_element',
- *		'params' => array('plugin' => 'my_plugin')
+ *   'element' => 'my_custom_element',
+ *   'params' => array('plugin' => 'my_plugin')
  * ));
  * }}}
  *
@@ -131,7 +157,11 @@ class SessionHelper extends Helper {
 				if (!empty($flash['params']['class'])) {
 					$class = $flash['params']['class'];
 				}
-				$out = '<div id="' . $key . 'Message" class="' . $class . '">' . $message . '</div>';
+				$out = $this->formatTemplate('flash', [
+					'class' => $class,
+					'key' => $key,
+					'message' => $message
+				]);
 			} elseif (!$flash['element']) {
 				$out = $message;
 			} else {