mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-01-31 09:06:17 +00:00
Correct input generation for postgres numeric types.
Numeric types in postgres are treated like decimals, except they can have no length, precision or scale components defined. IE does not accept 1.00000 as a valid step attribute so we'll default to any when we encounter decimal types with no length. Refs #7497
This commit is contained in:
parent
3fa5c4ff94
commit
506051f688
2 changed files with 14 additions and 2 deletions
|
@ -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 @@ class FormHelperTest extends CakeTestCase {
|
|||
);
|
||||
$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'),
|
||||
|
|
|
@ -1209,10 +1209,10 @@ class FormHelper extends AppHelper {
|
|||
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';
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue