Browse Source

Added binary type to field type map, defaulting to file input field

Refs  https://github.com/cakephp/cakephp/issues/2071
Marc Würth 12 years ago
parent
commit
bf8a13a77c

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

@@ -808,6 +808,36 @@ class FormHelperTest extends CakeTestCase {
 	}
 
 /**
+ * Tests correct generation of file upload fields for binary fields
+ *
+ * @return void
+ */
+	public function testFileUploadFieldTypeGenerationForBinaries() {
+		$model = ClassRegistry::getObject('Contact');
+		$model->setSchema(array('foo' => array(
+			'type' => 'binary',
+			'null' => false,
+			'default' => null,
+			'length' => 1024
+		)));
+
+		$this->Form->create('Contact');
+		$result = $this->Form->input('foo');
+		$expected = array(
+			'div' => array('class' => 'input file'),
+			'label' => array('for' => 'ContactFoo'),
+			'Foo',
+			'/label',
+			array('input' => array(
+				'type' => 'file', 'name' => 'data[Contact][foo]',
+				'id' => 'ContactFoo'
+			)),
+			'/div'
+		);
+		$this->assertTags($result, $expected);
+	}
+
+/**
  * testFormSecurityMultipleFields method
  *
  * Test secure() with multiple row form. Ensure hash is correct.

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

@@ -1147,7 +1147,8 @@ class FormHelper extends AppHelper {
 				'boolean' => 'checkbox', 'timestamp' => 'datetime',
 				'text' => 'textarea', 'time' => 'time',
 				'date' => 'date', 'float' => 'number',
-				'integer' => 'number', 'decimal' => 'number'
+				'integer' => 'number', 'decimal' => 'number',
+				'binary' => 'file'
 			);
 
 			if (isset($this->map[$type])) {