Browse Source

Code cleanup and improvemnt for overriding standard widgets

Denys Kyselov 11 years ago
parent
commit
76d48ede56
2 changed files with 10 additions and 4 deletions
  1. 4 2
      src/View/Helper/FormHelper.php
  2. 6 2
      src/View/Widget/WidgetRegistry.php

+ 4 - 2
src/View/Helper/FormHelper.php

@@ -202,8 +202,10 @@ class FormHelper extends Helper {
 			unset($config['registry']);
 		}
 		if (isset($config['widgets'])) {
-			if (is_string($config['widgets'])) $config['widgets'] = [$config['widgets']];
-			$widgets = $widgets + $config['widgets'];
+			if (is_string($config['widgets'])) {
+				$config['widgets'] = (array)$config['widgets'];
+			}
+			$widgets += $config['widgets'];
 			unset($config['widgets']);
 		}
 

+ 6 - 2
src/View/Widget/WidgetRegistry.php

@@ -65,6 +65,9 @@ class WidgetRegistry {
 			$this->add($widgets);
 		}
 		$this->_widgets['_view'] = $view;
+		debug($this->_widgets);
+		exit();
+
 	}
 
 /**
@@ -104,7 +107,7 @@ class WidgetRegistry {
  * @throws \RuntimeException When class does not implement WidgetInterface.
  */
 	public function add(array $widgets) {
-		foreach ($widgets as $object) {
+		foreach ($widgets as $key=>$object) {
 			if (gettype($object) === 'object' &&
 				!($object instanceof WidgetInterface)
 			) {
@@ -113,9 +116,10 @@ class WidgetRegistry {
 				);
 			} elseif (is_string($object)){
 				$this->load($object);
+				unset($widgets[$key]);
 			}
 		}
-		$this->_widgets = $widgets + $this->_widgets;
+		$this->_widgets += $widgets;
 	}
 
 /**