浏览代码

auto %s pattern

euromark 13 年之前
父节点
当前提交
410b3f529a

+ 10 - 0
Model/Behavior/MultipleDisplayFieldsBehavior.php

@@ -32,6 +32,13 @@ class MultipleDisplayFieldsBehavior extends ModelBehavior {
 		//'on' => array('list'),
 		//'on' => array('list'),
 	);
 	);
 
 
+	/**
+	 * MultipleDisplayFieldsBehavior::setup()
+	 *
+	 * @param Model $Model
+	 * @param array $config
+	 * @return void
+	 */
 	public function setup(Model $Model, $config = array()) {
 	public function setup(Model $Model, $config = array()) {
 		$this->settings[$Model->alias] = $this->_defaults;
 		$this->settings[$Model->alias] = $this->_defaults;
 
 
@@ -46,6 +53,9 @@ class MultipleDisplayFieldsBehavior extends ModelBehavior {
 		}
 		}
 		if (isset($config['pattern'])) {
 		if (isset($config['pattern'])) {
 			$this->settings[$Model->alias]['pattern'] = $config['pattern'];
 			$this->settings[$Model->alias]['pattern'] = $config['pattern'];
+		} else {
+			$fields = isset($config['fields']) ? count($config['fields']) : 0;
+			$this->settings[$Model->alias]['pattern'] = trim(str_repeat('%s ', $fields));
 		}
 		}
 		if (isset($config['defaults'])) {
 		if (isset($config['defaults'])) {
 			$this->settings[$Model->alias]['defaults'] = $config['defaults'];
 			$this->settings[$Model->alias]['defaults'] = $config['defaults'];

+ 14 - 1
Test/Case/Model/Behavior/MultipleDisplayFieldsBehaviorTest.php

@@ -1,5 +1,4 @@
 <?php
 <?php
-
 App::uses('MultipleDisplayFieldsBehavior', 'Tools.Model/Behavior');
 App::uses('MultipleDisplayFieldsBehavior', 'Tools.Model/Behavior');
 App::uses('MyCakeTestCase', 'Tools.TestSuite');
 App::uses('MyCakeTestCase', 'Tools.TestSuite');
 
 
@@ -30,7 +29,21 @@ class MultipleDisplayFieldsBehaviorTest extends MyCakeTestCase {
 		$this->Comment->Behaviors->load('Tools.MultipleDisplayFields');
 		$this->Comment->Behaviors->load('Tools.MultipleDisplayFields');
 		$res = $this->Comment->find('first');
 		$res = $this->Comment->find('first');
 		$this->assertSame(7, count($res['Comment']));
 		$this->assertSame(7, count($res['Comment']));
+		$this->Comment->Behaviors->unload('MultipleDisplayFields');
+
+		// auto %s pattern
+		$config = array(
+			'fields' => array(
+				$this->Comment->alias . '.comment', $this->Comment->alias . '.published'
+			),
+		);
+		$this->Comment->Behaviors->load('Tools.MultipleDisplayFields', $config);
+		$res = $this->Comment->find('list');
+		$this->debug($res);
+		$this->assertEquals('First Comment for First Article Y', $res[1]);
+		$this->Comment->Behaviors->unload('MultipleDisplayFields');
 
 
+		// custom pattern
 		$config = array(
 		$config = array(
 			'fields' => array(
 			'fields' => array(
 				$this->Comment->alias . '.comment', $this->Comment->alias . '.published'
 				$this->Comment->alias . '.comment', $this->Comment->alias . '.published'