Ejemplo n.º 1
0
 protected function field_cfg_from_string($name)
 {
     $edit_field_cfg = array('name' => $name);
     if ($this->model == null) {
         throw new Exception('model not set');
     }
     $field = Arr::get($this->model->fields(), $name);
     $relation = Arr::get($this->model->get_relations(), $name);
     if ($field !== null) {
         switch ($field['type']) {
             case Type::BOOLEAN:
                 $edit_field_cfg['type'] = 'boolean';
                 break;
             case Type::DOUBLE:
             case Type::INTEGER:
             case Type::STRING:
                 $edit_field_cfg['type'] = 'text';
                 break;
             case Type::DATE:
                 $edit_field_cfg['type'] = 'date';
                 break;
             default:
                 throw new Exception('not implemented');
         }
     } elseif ($relation !== null && $relation['model'] == 'Image') {
         if ($relation['type'] == Relation::MANY_TO_ONE) {
             $edit_field_cfg['type'] = 'image';
         } elseif ($relation['type'] == Relation::MANY_TO_MANY) {
             $edit_field_cfg['type'] = 'gallery';
         } else {
             throw new Exception('bad relation ' . $name);
         }
     } elseif ($relation !== null) {
         switch ($relation['type']) {
             case Relation::MANY_TO_MANY:
                 $edit_field_cfg['type'] = 'tags';
                 break;
             default:
                 throw new Exception('relation not implemented');
         }
     } else {
         throw new Exception('property not found');
     }
     return $edit_field_cfg;
 }