示例#1
0
 /**
  * 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);
 }
示例#2
0
 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');
 }