Fiz upload de um arquivo de imagem usando o managed_file
tipo API de formulário, mas após o upload da imagem ela não aparece como uma miniatura ao lado do campo. O que é renderizado é o nome do arquivo da imagem com um link para a imagem e um pequeno ícone.
Como mostro a miniatura da imagem depois de carregá-la (como a visualização da imagem no campo Imagem principal)?
Além disso, como posso mostrar uma imagem padrão ao lado (se ela tiver um valor padrão)?
Este é o meu 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'])) {
para `print drupal_render_children ($ form);` escreverá no.tpl.php
arquivo? Caso contrário, onde devo escrever esta parte?Defina o tema no campo e simule a estrutura de código para visualizar a imagem que você acabou de carregar. Minha solução é a seguinte,
No seu hook_theme (),
No seu theme_abc_thumb_upload (),
fonte
image_style_url('thumbnail', $element['#file']->uri)
no lugar defile_create_url($element['#file']->uri)
- o código atual pode quebrar seriamente o layout se o usuário enviar algo ruim.about dimension, verifique esta validação file_validate_image_resolution :
fonte
Hackear o HTML para um botão de remoção não funciona para mim. A página é atualizada sem remover a imagem. Em vez disso, copiei do
theme_image_widget
retorno de chamada do campo da imagem principal encontrado emdocroot/modules/image/image.field.inc
.Use esta função de tema para renderizar o elemento:
Definição do elemento do formulário:
fonte
Adicione outro elemento de formulário para conter a marcação para a visualização da imagem. No código abaixo, $ v contém os valores do formulário de interesse. Seu caso específico pode atraí-los de um nó, do estado do formulário ou de algum outro lugar. É um objeto de arquivo convertido em uma matriz.
Observe que eu defino o status do arquivo como permanente e salve novamente. Isto é para que as imagens enviadas sejam visualizadas corretamente. Os estilos de imagem não podem ser gerados para imagens no armazenamento temporário, portanto, você deve sinalizá-los como perm. Dependendo do seu caso de uso e fluxo de trabalho, pode ser necessário endereçar imagens "órfãs".
Minha estrutura de formulário ($ form ['photos'] ['items'] [$ i]) é para um campo de imagem com várias entradas. Eu tenho um modelo de tema que os reúne e os coloca em drupal_add_tabledrag . Sua estrutura de matriz de formulários provavelmente será diferente.
fonte