Browse Source

Fixing ClassRegistry that was incorrectly checking class inheritance
Fixing Model class that was incorrectly sending model names to be instantiated
Fixing more FormHelper tests

Jose Lorenzo Rodriguez 14 years ago
parent
commit
ef5650c034

+ 5 - 2
lib/Cake/Model/Model.php

@@ -702,10 +702,13 @@ class Model extends Object {
 		}
 
 		if (!isset($this->{$assoc}) || $this->{$assoc}->name !== $className) {
-			$model = array('class' => $plugin . '.' . $className, 'alias' => $assoc);
+			if ($plugin) {
+				$plugin .= '.';
+			}
+			$model = array('class' => $plugin . $className, 'alias' => $assoc);
 			$this->{$assoc} = ClassRegistry::init($model);
 			if ($plugin) {
-				ClassRegistry::addObject($plugin . '.' . $className, $this->{$assoc});
+				ClassRegistry::addObject($plugin . $className, $this->{$assoc});
 			}
 			if ($assoc) {
 				$this->tableToModel[$this->{$assoc}->table] = $assoc;

+ 1 - 1
lib/Cake/Test/Case/View/Helper/FormHelperTest.php

@@ -1882,7 +1882,7 @@ class FormHelperTest extends CakeTestCase {
 			'label' => array('for' => 'ObjectField'),
 			'Field',
 			'/label',
-			'input' => array('type' => 'text', 'name' => 'data[Object][field]', 'id' => 'ObjectField'),
+			'input' => array('type' => 'text', 'name' => 'data[Object][field]', 'id' => 'ModelField'),
 			'A message to you, Rudy',
 			'/div'
 		);

+ 10 - 8
lib/Cake/Utility/ClassRegistry.php

@@ -135,16 +135,18 @@ class ClassRegistry {
 				App::uses($plugin . 'AppModel', $pluginPath . 'Model');
 				App::uses($class, $pluginPath . 'Model');
 
-				if (class_exists($class) && $class instanceof Model) {
+				if (class_exists($class)) {
 					${$class} = new $class($settings);
+					$$class = ($$class instanceof Mdoel) ? $$class : null;
+				}
+				if (!isset($$class) && $strict) {
+					return false;
+				} elseif ($plugin && class_exists($plugin . 'AppModel')) {
+					$appModel = $plugin . 'AppModel';
 				} else {
-					 if ($strict) {
-						return false;
-					} elseif ($plugin && class_exists($plugin . 'AppModel')) {
-						$appModel = $plugin . 'AppModel';
-					} else {
-						$appModel = 'AppModel';
-					}
+					$appModel = 'AppModel';
+				}
+				if (!empty($appModel)) {
 					$settings['name'] = $class;
 					${$class} = new $appModel($settings);
 				}

+ 3 - 4
lib/Cake/View/Helper/FormHelper.php

@@ -156,11 +156,10 @@ class FormHelper extends AppHelper {
 				return $this->fieldset[$model]['key'];
 			}
 
-			if (!isset($this->fieldset[$model]['fields'])) {
-				$fields = $this->fieldset[$model]['fields'] = $object->schema();
-			}
-
 			if ($key === 'fields') {
+				if (!isset($this->fieldset[$model]['fields'])) {
+					$fields = $this->fieldset[$model]['fields'] = $object->schema();
+				}
 				if (empty($field)) {
 					foreach ($object->hasAndBelongsToMany as $alias => $assocData) {
 						$this->fieldset[$object->alias]['fields'][$alias] = array('type' => 'multiple');