euromark 11 年 前
コミット
455db2dd4c

+ 6 - 10
Model/Behavior/MultipleDisplayFieldsBehavior.php

@@ -47,7 +47,7 @@ class MultipleDisplayFieldsBehavior extends ModelBehavior {
 	 * @return void
 	 */
 	public function setup(Model $Model, $config = array()) {
-		$this->settings[$Model->alias] = $config + $this->_defaultConfig;
+		$this->settings[$Model->alias] = $this->_defaultConfig;
 
 		if (isset($config['fields'])) {
 			$myFields = array();
@@ -67,6 +67,10 @@ class MultipleDisplayFieldsBehavior extends ModelBehavior {
 		if (isset($config['defaults'])) {
 			$this->settings[$Model->alias]['defaults'] = $config['defaults'];
 		}
+		if (isset($config['displayField'])) {
+			$this->settings[$Model->alias]['displayField'] = $config['displayField'];
+		}
+		//$this->settings[$Model->alias] += $config;
 	}
 
 	/**
@@ -78,9 +82,6 @@ class MultipleDisplayFieldsBehavior extends ModelBehavior {
 	 * @return array Modified results
 	 */
 	public function afterFind(Model $Model, $results, $primary = false) {
-		if (empty($this->settings[$Model->alias]['multiple_display_fields'])) {
-			return $results;
-		}
 		// if displayFields is set, attempt to populate
 		foreach ($results as $key => $result) {
 			$displayFieldValues = array();
@@ -136,10 +137,7 @@ class MultipleDisplayFieldsBehavior extends ModelBehavior {
 	 * @return array Modified queryData
 	 */
 	public function beforeFind(Model $Model, $queryData) {
-		if (isset($queryData['list']) && !isset($this->settings[$Model->alias]['multiple_display_fields'])) {
-			// MOD 2009-01-09 ms (fixes problems with model related index functions - somehow gets triggered even on normal find queries...)
-			$this->settings[$Model->alias]['multiple_display_fields'] = 1;
-
+		if (isset($queryData['list'])) {
 			// substr is used to get rid of "{n}" fields' prefix...
 			array_push($queryData['fields'], substr($queryData['list']['keyPath'], 4));
 			foreach ($this->settings[$Model->alias]['fields'] as $mName => $mFields) {
@@ -147,8 +145,6 @@ class MultipleDisplayFieldsBehavior extends ModelBehavior {
 					array_push($queryData['fields'], $mName . '.' . $mField);
 				}
 			}
-		} else {
-			$this->settings[$Model->alias]['multiple_display_fields'] = 0;
 		}
 		return $queryData;
 	}

+ 18 - 3
Test/Case/Model/Behavior/MultipleDisplayFieldsBehaviorTest.php

@@ -20,11 +20,21 @@ class MultipleDisplayFieldsBehaviorTest extends MyCakeTestCase {
 		$this->Comment->displayField = 'comment';
 	}
 
+	/**
+	 * MultipleDisplayFieldsBehaviorTest::testObject()
+	 *
+	 * @return void
+	 */
 	public function testObject() {
 		$this->assertTrue(is_object($this->MultipleDisplayFieldsBehavior));
 		$this->assertInstanceOf('MultipleDisplayFieldsBehavior', $this->MultipleDisplayFieldsBehavior);
 	}
 
+	/**
+	 * MultipleDisplayFieldsBehaviorTest::testSimple()
+	 *
+	 * @return void
+	 */
 	public function testSimple() {
 		$this->Comment->Behaviors->load('Tools.MultipleDisplayFields');
 		$res = $this->Comment->find('first');
@@ -56,18 +66,23 @@ class MultipleDisplayFieldsBehaviorTest extends MyCakeTestCase {
 		$this->assertEquals('First Comment for First Article (Y)', $res[1]);
 	}
 
+	/**
+	 * MultipleDisplayFieldsBehaviorTest::testAdvanced()
+	 *
+	 * @return void
+	 */
 	public function testAdvanced() {
 		$config = array(
 			'fields' => array(
 				$this->Comment->alias . '.comment', $this->Comment->User->alias . '.user', $this->Comment->alias . '.published'
 			),
-			'displayField' => array('display_field'),
+			'displayField' => 'display_field',
 			'pattern' => '%s by %s (%s)',
 		);
 		$this->Comment->Behaviors->load('Tools.MultipleDisplayFields', $config);
-		$res = $this->Comment->find('list', array('contain' => array('User')));
+		$res = $this->Comment->find('all', array('contain' => array('User')));
 		$this->debug($res);
-		$this->assertEquals('First Comment for First Article by Y (nate)', $res[1]);
+		$this->assertEquals('First Comment for First Article by Y (nate)', $res[5]['Comment']['display_field']);
 	}
 
 }