Browse Source

Fix issue with 0.Model.field inputs.

These inputs would be incorrectly prefixed with another Model name.
mark_story 14 years ago
parent
commit
24fd87398d
2 changed files with 16 additions and 3 deletions
  1. 14 1
      lib/Cake/Test/Case/View/HelperTest.php
  2. 2 2
      lib/Cake/View/Helper.php

+ 14 - 1
lib/Cake/Test/Case/View/HelperTest.php

@@ -255,7 +255,7 @@ class HelperTest extends CakeTestCase {
  */
 	public function testSetEntityScoped() {
 		$this->Helper->setEntity('HelperTestPost', true);
-		$this->assertEquals(array('HelperTestPost'), $this->Helper->entity());
+	$this->assertEquals(array('HelperTestPost'), $this->Helper->entity());
 
 		$this->Helper->setEntity('id');
 		$expected = array('HelperTestPost', 'id');
@@ -311,6 +311,19 @@ class HelperTest extends CakeTestCase {
 	}
 
 /**
+ * Test creating saveMany() compatible entities
+ *
+ * @return void
+ */
+	public function testSetEntitySaveMany() {
+		$this->Helper->setEntity('HelperTestPost', true);
+
+		$this->Helper->setEntity('0.HelperTestPost.id');
+		$expected = array('0', 'HelperTestPost', 'id');
+		$this->assertEquals($expected, $this->Helper->entity());
+	}
+
+/**
  * Test that setEntity doesn't make CamelCase fields that are not associations an
  * associated model.
  *

+ 2 - 2
lib/Cake/View/Helper.php

@@ -444,9 +444,9 @@ class Helper extends Object {
 			$entity = $this->_modelScope . '.' . $entity;
 		}
 
-		// 0.name, 0.created.month style inputs.
+		// 0.name, 0.created.month style inputs.  Excludes inputs with the modelScope in them.
 		if (
-			$count >= 2 && is_numeric($parts[0]) && !is_numeric($parts[1]) && $this->_modelScope
+			$count >= 2 && is_numeric($parts[0]) && !is_numeric($parts[1]) && $this->_modelScope && strpos($entity, $this->_modelScope) === false
 		) {
 			$entity = $this->_modelScope . '.' . $entity;
 		}