KumbiaPHP beta2-dev
Framework PHP en español
|
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 }