diff --git a/lib/Cake/Test/Case/View/Helper/FormHelperTest.php b/lib/Cake/Test/Case/View/Helper/FormHelperTest.php index 1058bc72f38..535396b6b0a 100644 --- a/lib/Cake/Test/Case/View/Helper/FormHelperTest.php +++ b/lib/Cake/Test/Case/View/Helper/FormHelperTest.php @@ -353,6 +353,7 @@ class ValidateUser extends CakeTestModel { 'email' => array('type' => 'string', 'null' => '', 'default' => '', 'length' => '255'), 'balance' => array('type' => 'float', 'null' => false, 'length' => '5,2'), 'cost_decimal' => array('type' => 'decimal', 'null' => false, 'length' => '6,3'), + 'null_decimal' => array('type' => 'decimal', 'null' => false, 'length' => null), 'ratio' => array('type' => 'decimal', 'null' => false, 'length' => '10,6'), 'population' => array('type' => 'decimal', 'null' => false, 'length' => '15,0'), 'created' => array('type' => 'date', 'null' => '1', 'default' => '', 'length' => ''), @@ -2045,6 +2046,17 @@ public function testInput() { ); $this->assertTags($result, $expected); + $result = $this->Form->input('ValidateUser.null_decimal'); + $expected = array( + 'div' => array('class'), + 'label' => array('for'), + 'Null Decimal', + '/label', + 'input' => array('name', 'type' => 'number', 'step' => 'any', 'id'), + '/div', + ); + $this->assertTags($result, $expected); + $result = $this->Form->input('ValidateUser.ratio'); $expected = array( 'div' => array('class'), diff --git a/lib/Cake/View/Helper/FormHelper.php b/lib/Cake/View/Helper/FormHelper.php index 4f56e515b54..3d186068891 100644 --- a/lib/Cake/View/Helper/FormHelper.php +++ b/lib/Cake/View/Helper/FormHelper.php @@ -1209,10 +1209,10 @@ protected function _magicOptions($options) { if ($options['type'] === 'number' && !isset($options['step']) ) { - if ($type === 'decimal') { + if ($type === 'decimal' && isset($fieldDef['length'])) { $decimalPlaces = substr($fieldDef['length'], strpos($fieldDef['length'], ',') + 1); $options['step'] = sprintf('%.' . $decimalPlaces . 'F', pow(10, -1 * $decimalPlaces)); - } elseif ($type === 'float') { + } elseif ($type === 'float' || $type === 'decimal') { $options['step'] = 'any'; } }