Ejemplo n.º 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);
 }