Browse Source

Move positional params into options array

Bryan Crowe 12 years ago
parent
commit
2db0ba9326
2 changed files with 25 additions and 31 deletions
  1. 20 10
      src/Controller/Component/FlashComponent.php
  2. 5 21
      src/View/Helper/FlashHelper.php

+ 20 - 10
src/Controller/Component/FlashComponent.php

@@ -32,6 +32,18 @@ class FlashComponent extends Component {
 	protected $_session;
 
 /**
+ * Default configuration
+ *
+ * @var array
+ */
+	protected $_defaultConfig = [
+		'key' => 'flash',
+		'element' => null,
+		'class' => 'info',
+		'params' => []
+	];
+
+/**
  * Constructor
  *
  * @param ComponentRegistry $collection A ComponentRegistry for this component
@@ -42,21 +54,19 @@ class FlashComponent extends Component {
 		$this->_session = $collection->getController()->request->session();
 	}
 
-	public function set($message, $element = null, array $params = array(), $key = 'flash') {
+	public function set($message, array $options = []) {
+		$opts = array_merge($this->_defaultConfig, $options);
+
 		if ($message instanceof \Exception) {
 			$message = $message->getMessage();
 		}
-		$this->_writeFlash($message, 'info', $params + compact('element', 'key'));
-	}
 
-	protected function _writeFlash($message, $type = 'info', $options = []) {
-		$options += ['key' => 'flash'];
-		$key = $options['key'];
-		unset($options['key']);
-		$this->_session->write("Message.$key", [
+		$this->_session->write("Message.{$opts['key']}", [
 			'message' => $message,
-			'type' => $type,
-			'params' => $options
+			'key' => $opts['key'],
+			'element' => $opts['element'],
+			'class' => $opts['class'],
+			'params' => $opts['params']
 		]);
 	}
 }

+ 5 - 21
src/View/Helper/FlashHelper.php

@@ -39,33 +39,17 @@ class FlashHelper extends Helper {
 			return '';
 		}
 
-		if (!empty($attrs)) {
-			$flash = array_merge($flash, $attrs);
-		}
-
-		$message = $flash['message'];
-		$class = $flash['type'];
-		$params = $flash['params'];
+		$flash = array_merge($flash, $attrs);
 
-		if (isset($flash['element'])) {
-			$params['element'] = $flash['element'];
-		}
-
-		if (empty($params['element'])) {
-			if (!empty($flash['class'])) {
-				$class = $flash['class'];
-			}
+		if ($flash['element'] === null) {
 			return $this->formatTemplate('flash', [
-				'class' => $class,
 				'key' => $key,
-				'message' => $message
+				'class' => $flash['class'],
+				'message' => $flash['message']
 			]);
 		}
 
-		$params['message'] = $message;
-		$params['type'] = $class;
-
-		return $this->_View->element($params['element'], $params);
+		return $this->_View->element($flash['element'], $flash);
 	}
 
 /**