/** * Sobrecarga do método input incluindo funcionalidades * extras, tais como: * * 1 - Localização automática dos tipos date/datetime e numérico/float * 2 - Formatação baseada no TwitterBootstrap * */ public function input($fieldName, $options = array()) { $this->setEntity($fieldName); $modelKey = $this->model(); $fieldKey = $this->field(); $fieldDef = $this->_introspectModel($modelKey, 'fields', $fieldKey); $value = null; if (isset($options['value'])) { $value = $options['value']; } else { if (isset($this->request->data[$modelKey][$fieldKey])) { $value = $this->request->data[$modelKey][$fieldKey]; } } if ((!isset($options['localize']) || $options['localize'] === true) && !empty($value)) { switch ($fieldDef['type']) { case 'date': $value = Localize::date($value); break; case 'datetime': case 'timestamp': $value = Localize::datetime($value); break; case 'float': $value = Localize::number($value); break; } $options['value'] = $value; } if ((!isset($options['keepSeconds']) || $options['keepSeconds'] === true) && $fieldDef['type'] === 'time') { $options['value'] = empty($value) || !preg_match('/[0-9]{2}\\:[0-9]{2}(\\:[0-9]{2})?/') ? '00:00' : substr($value, 0, 5); } if (!isset($options['useBootstrap']) || $options['useBootstrap'] === true) { /** * @todo Helper não deve estender o BootstrapForm, mas * sim usa-lo quando definido. */ } return parent::input($fieldName, $options); }
public function testUsDecimals() { Localize::setLocale('en_US'); $this->assertIdentical(Localize::number('1'), '1.00'); $this->assertIdentical(Localize::number('23'), '23.00'); $this->assertIdentical(Localize::number('0.5'), '0.50'); $this->assertIdentical(Localize::number('25.32'), '25.32'); $this->assertIdentical(Localize::number('25.32', 1), '25.3'); $this->assertIdentical(Localize::number('25.32', 0), '25'); $this->assertIdentical(Localize::number('1,300.52'), '1300.52'); $this->assertIdentical(Localize::number('1,300.52', null, true), '1,300.52'); $this->assertIdentical(Localize::number('3,965,300.52'), '3965300.52'); $this->assertIdentical(Localize::number('3,965,300.52', 1, true), '3,965,300.5'); }