Hola a todos.
Soy nuevo en el uso de este ‘frame work’, es una excelente herramienta.
Los felicito!
He implementado un ABM semejante al de personas donde hay un ejemplo de como cargar una imagen a la base de datos y mostrar el preview en el formulario. Lo construí muy rápido y funciona perfectamente. Asi que pense, para cargar un pdf debe ser muy semejante asi que manos a la obra… Y no he logrado hacerlo funcionar.
Hice unos pequeños cambios:
<?php
//---- Formulario -------------------------------------------------------------------
49
50 function conf__formulario(toba_ei_formulario $form)
51 {
52 if ($this->dep('datos')->esta_cargada()) {
53 $datos = $this->dep('datos')->tabla('solicitudes')->get();
54 $fp_certificado = $this->dep('datos')->tabla('solicitudes')->get_blob('pdf_certificado');
55 // Poner el vinculo al archivo
56 if (isset($fp_certificado)) {
57 //-- Se necesita el path fisico y la url de una archivo temporal que va a contener la imagen
58 $temp_nombre = md5(uniqid(time()));
59 $temp_archivo = toba::proyecto()->get_www_temp($temp_nombre);
60
61 //-- Se pasa el contenido al archivo temporal
62 $temp_fp = fopen($temp_archivo['path'], 'w');
63 stream_copy_to_stream($fp_certificado, $temp_fp);
64 fclose($temp_fp);
65 $tamaño = round(filesize($temp_archivo['path']) / 1024);
66
67 //-- Se muestra la imagen temporal
68 $datos['vinculo_certificado'] = "<a href='{$temp_archivo['url']}'>Ver certificado</a>";
69 $datos['pdf_certificado'] = 'Tamaño: '.$tamaño. ' KB';
70 } else {
71 $datos['pdf_certificado'] = null;
72 }
73
74 $form->set_datos($datos);
75 } else {
76 $this->pantalla()->eliminar_evento('eliminar');
77 }
78 }
79
?>
Al procesar el formulario el archivo al parecer carga al servidor, pues en el arreglo de datos sale la descripción, como se ve en el log.
Pero no lo carga a la base de datos.
Iniciando componentes... componente(2391): Pantalla de eventos: 'pant_edicion' Procesando eventos... componente(2391): [ inicializar_dependencias ] array ( 0 => 'formulario', ) componente(2389): IMPLICITO: modificacion componente(2391): [ registrar_evento ] 'modificacion' -> [ evt__formulario__modificacion ] array ( 0 => array ( 'solicitud' => '9', 'pedido' => NULL, 'cotizacion' => NULL, 'empresa' => '1558', 'contacto_servicio' => NULL, 'direccion_servicio' => NULL, 'telefono_servicio' => NULL, 'email_servicio' => NULL, 'estado' => '6', 'fecha_asignacion' => NULL, 'fecha_agendada' => NULL, 'fecha_ejecucion' => NULL, 'fecha_aprobacion' => NULL, 'observaciones' => NULL, 'horas_desplaz' => NULL, 'tipo_servicio' => '9', 'servicio' => '10', 'fecha' => '2010-05-25', 'fecha_cierre' => '2010-06-23', 'lider' => NULL, 'asesor' => NULL, 'pdf_protocolo' => NULL, 'vinculo_certificado' => NULL, 'pdf_certificado' => array ( 'name' => 'certificado.pdf', 'type' => 'application/pdf', 'tmp_name' => '/tmp/phpYCarWr', 'error' => 0, 'size' => 106057, ), ), ) componente(2553): dt_solicitudes El registro tiene una estructura incorrecta: El campo 'vinculo_certificado' no forma parte de la DEFINICION. componente(2391): [ evento ] 'guardar' -> [ evt__guardar ] ************ ABRIR transaccion (sglmain_vx@localhost) **************** AP_TABLA: [solicitudes] No hay campos para hacer el UPDATE ************ CERRAR transaccion (sglmain_vx@localhost) **************** TABLA: [solicitudes] RESET!! TABLA: [solicitudes] Se resetea el cursor componente(2391): [ callback ] 'evt__pant_edicion__salida' no fue atrapado componente(2391): [ callback ] 'evt__pant_seleccion__entrada' no fue atrapado Configurando dependencias para responder al servicio... componente(2391): Pantalla de servicio: 'pant_seleccion' componente(2391): [ callback ] 'conf__pant_seleccion' no fue atrapado componente(2391): [ callback ] 'conf__filtro' Se filtro el evento: cancelar componente(2391): [ callback ] 'conf__cuadro' Respondiendo al servicio__generar_html...
Les agradezco su gentil colaboración, he buscado en el manual y en el foro pero no encuentro donde esta el problema. Tengo instalada la versión 1.4.9 sobre Linux CentOS.
Saludos,
Jaime M.