KumbiaPHP beta2-dev
Framework PHP en español
model_form.php
Ir a la documentación de este archivo.
00001 <?php
00023 class ModelForm {
00029         public static function create($model, $action = NULL) {
00030         
00031                 $model_name = Util::smallcase(get_class($model));
00032                 if(! $action) $action = ltrim(Router::get('route'),'/');
00033                 
00034                 echo '<form action="',PUBLIC_PATH.$action,'" method="post" id="',$model_name,'" class="scaffold">'.PHP_EOL; 
00035                 $pk = $model->primary_key[0];
00036                 echo '<input id="',$model_name,'_',$pk,'" name="',$model_name,'[',$pk,']" class="id" value="',$model->$pk.'" type="hidden">'.PHP_EOL; 
00037                 
00038                 $fields = array_diff($model->fields, $model->_at, $model->_in, $model->primary_key);
00039                 
00040                 foreach ($fields as $field){
00041                         
00042                         $tipo = trim(preg_replace('/(\(.*\))/','',$model->_data_type[$field]));//TODO: recoger tamaño y otros valores
00043                         $alias = $model->get_alias($field);
00044                         $formId = $model_name.'_'.$field;
00045                         $formName = $model_name.'['.$field.']';
00046                         
00047                         if (in_array($field, $model->not_null)){
00048                                 echo "<label for=\"$formId\" class=\"required\">$alias *</label>".PHP_EOL; 
00049                         } else echo "<label for=\"$formId\">$alias</label>".PHP_EOL; 
00050                                                 
00051                         switch ($tipo){
00052                                                 case 'tinyint': case 'smallint': case 'mediumint':
00053                                                 case 'integer': case 'int': case 'bigint':
00054                                                 case 'float': case 'double': case 'precision':
00055                                                 case 'real': case 'decimal': case 'numeric':
00056                                                 case 'year': case 'day': case 'int unsigned': // Números
00057 
00058                                                         if(strripos($field,'_id',-3)) {
00059                                                                 echo Form::dbSelect($model_name.'.'.$field,NULL,NULL,'Seleccione',NULL,$model->$field);
00060                                                                 break;
00061                                                         } else {
00062                                                                 echo "<input id=\"$formId\" type=\"number\" name=\"$formName\" value=\"{$model->$field}\">".PHP_EOL ; 
00063                                                                 break;
00064                                                         }
00065                                                 
00066                                                 case 'date': // Usar el js de datetime
00067                                                         echo "<input id=\"$formId\" type=\"date\" name=\"$formName\" value=\"{$model->$field}\">".PHP_EOL;
00068                                                         break;
00069                                                 case 'datetime': case 'timestamp':
00070                                                         echo "<input id=\"$formId\" type=\"datetime\" name=\"$formName\" value=\"{$model->$field}\">".PHP_EOL;
00071 
00072                                                         //echo '<script type="text/javascript" src="/javascript/kumbia/jscalendar/calendar.js"></script>
00073                                                         //<script type="text/javascript" src="/javascript/kumbia/jscalendar/calendar-setup.js"></script>
00074                                                         //<script type="text/javascript" src="/javascript/kumbia/jscalendar/calendar-es.js"></script>'.PHP_EOL;
00075                                                         //echo date_field_tag("$formId");
00076                                                         break;
00077                                                 
00078                                                 case 'enum': case 'set': case 'bool':
00079                                                 // Intentar usar select y lo mismo para los field_id
00080                                                         echo "<input id=\"$formId\" class=\"select\" name=\"$formName\" type=\"text\" value=\"{$model->$field}\">".PHP_EOL;
00081                                                         break;
00082                                                 
00083                                                 case 'text': case 'mediumtext': case 'longtext':
00084                                                 case 'blob': case 'mediumblob': case 'longblob': // Usar textarea
00085                                                         echo "<textarea id=\"$formId\" name=\"$formName\">{$model->$field}</textarea>".PHP_EOL;
00086                                                         break;
00087                                                 
00088                                                 default: //text,tinytext,varchar, char,etc se comprobara su tamaño
00089                                                         echo "<input id=\"$formId\" type=\"text\" name=\"$formName\" value=\"{$model->$field}\">".PHP_EOL;
00090                                                         //break;                                        
00091                         
00092                         }
00093                 }
00094                 //echo radio_field_tag("actuacion", array("U" => "una", "D" => "dos", "N" => "Nada"), "value: N");
00095                 echo '<input type="submit" value="Enviar" />'.PHP_EOL;
00096                 echo '</form>'.PHP_EOL;
00097         }
00098 }
 Todo Estructuras de Datos Namespaces Archivos Funciones Variables Enumeraciones