Cargué un archivo de imagen usando el managed_file
tipo de API de formulario, pero después de cargar la imagen, no aparece como una miniatura al lado del campo. Lo que se representa es el nombre de archivo de la imagen con un enlace a la imagen y un pequeño icono.
¿Cómo muestro la miniatura de la imagen después de cargarla (como la vista previa de la imagen desde el campo Imagen principal)?
Además, ¿cómo puedo mostrar una imagen predeterminada al lado (si tiene un valor predeterminado)?
Este es mi código:
$form['logo'] = array(
'#title' => t('Logo'),
'#type' => 'managed_file',
'#required' => TRUE,
'#default_value' => variable_get('logo', ''),
'#upload_location' => 'public://',
'#upload_validators' => array(
'file_validate_extensions' => array('gif png jpg jpeg'),
'file_validate_size' => array(0.3*1024*1024),
)
if (!empty($form['#file'])) {
`print drupal_render_children ($ form);` escribirá en el.tpl.php
archivo? Si no es así, ¿dónde debo escribir esta parte?Defina el tema en el campo y simule la estructura del código para obtener una vista previa de la imagen que acaba de cargar. Mi solución es la siguiente,
En su hook_theme (),
En su theme_abc_thumb_upload (),
fuente
image_style_url('thumbnail', $element['#file']->uri)
en lugar defile_create_url($element['#file']->uri)
: el código actual puede romper seriamente el diseño si el usuario carga algo malo.acerca de la dimensión, compruebe esta validación file_validate_image_resolution :
fuente
Hackear el HTML para un botón de eliminar no me funciona. La página se actualiza sin eliminar la imagen. En su lugar, copié de la
theme_image_widget
devolución de llamada del campo de imagen central que se encuentra endocroot/modules/image/image.field.inc
.Use esta función de tema para representar el elemento:
Definición del elemento de forma:
fuente
Agregue otro elemento de formulario para contener el marcado para la vista previa de su imagen. En el siguiente código, $ v contiene los valores de forma de interés. Su caso específico puede extraerlos de un nodo, del estado del formulario o de otro lugar. Es un objeto de archivo convertido a una matriz.
Tenga en cuenta que configuro el estado del archivo como permanente y lo vuelvo a guardar. Esto es para que las imágenes que se cargan se previsualicen correctamente. Los estilos de imagen no se pueden generar para las imágenes en el almacenamiento temporal, por lo que debe marcarlas como permanentes. Dependiendo de su caso de uso y flujo de trabajo, es posible que deba abordar imágenes "huérfanas".
Mi estructura de formulario ($ form ['fotos'] ['artículos'] [$ i]) es para un campo de imagen de entrada múltiple. Tengo una plantilla de tema que los reúne y los coloca en drupal_add_tabledrag . Su estructura de matriz de formulario probablemente diferirá.
fuente