J'ai téléchargé un fichier image à l'aide du managed_file
type API de formulaire, mais après avoir téléchargé l'image, il n'apparaît pas sous forme de miniature à côté du champ. Ce qui est rendu est le nom de fichier de l'image avec un lien vers l'image et une petite icône.
Comment afficher la vignette de l'image après l'avoir téléchargée (comme l'aperçu de l'image à partir du champ Image principal)?
Comment puis-je également afficher une image par défaut à côté (si elle a une valeur par défaut)?
Voici mon code:
$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);` écrit dans le.tpl.php
fichier? Sinon, où dois-je écrire cette partie?Définissez le thème dans le champ et simulez la structure du code pour prévisualiser l'image que vous venez de télécharger. Ma solution est la suivante,
Dans votre hook_theme (),
Dans votre theme_abc_thumb_upload (),
la source
image_style_url('thumbnail', $element['#file']->uri)
à la place defile_create_url($element['#file']->uri)
- le code actuel peut sérieusement casser la mise en page si l'utilisateur télécharge quelque chose de mauvais.à propos de la dimension, vérifiez cette validation file_validate_image_resolution :
la source
Hacker le code HTML d'un bouton de suppression ne fonctionne pas pour moi. La page est actualisée sans supprimer l'image. Au lieu de cela, j'ai copié à partir du
theme_image_widget
rappel du champ d'image principale trouvé dansdocroot/modules/image/image.field.inc
.Utilisez cette fonction de thème pour rendre l'élément:
Définition de l'élément de formulaire:
la source
Ajoutez un autre élément de formulaire pour contenir le balisage de votre aperçu d'image. Dans le code ci-dessous, $ v contient les valeurs de formulaire qui vous intéressent. Votre cas spécifique peut les extraire d'un nœud, d'un état de formulaire ou ailleurs. Il s'agit d'un objet fichier converti en tableau.
Notez que j'ai défini le statut du fichier sur permanent et réenregistré. C'est pour que les images qui sont téléchargées soient prévisualisées correctement. Les styles d'image ne peuvent pas être générés pour les images dans le stockage temporaire, vous devez donc les marquer comme permanentes. En fonction de votre cas d'utilisation et de votre flux de travail, vous devrez peut-être traiter des images «orphelines».
Ma structure de formulaire ($ form ['photos'] ['items'] [$ i]) est pour un champ d'image à entrées multiples. J'ai un modèle de thème qui les rassemble et les met dans drupal_add_tabledrag . La structure de votre tableau de formulaires sera probablement différente.
la source