J'essaie d'afficher les vignettes des images téléchargées dans un formulaire personnalisé. Bien que je puisse voir les images dans mon tableau de formulaires après les avoir téléchargées dans le répertoire tmp de Drupal, voici ce que j'essaie d'utiliser pour les afficher:
$url = file_create_url($form_object->uploads[$key]->uri);
$output .= '<div class="grid-3">'.theme_image_style(array('style' => 'form-preview', 'path' => $url)).'</div>';
Bien que $url
Pointe vers la ressource de fichier, je ne peux pas afficher une image redimensionnée pour ma vie. Si j'utilise une balise img et que je mets $url
Comme source, les images apparaissent, mais elles sont énormes.
Puis-je ne pas appeler theme_image_style()
car ce ne sont que des images temporaires et non permanentes? Je peux les faire apparaître avec theme_image()
.
Comme suggéré, utilisez le thème ('image_style', ...), à partir des documents - changez simplement votre code en ceci:
url = file_create_url($form_object->uploads[$key]->uri);
$output .= '<div class="grid-3">'.theme('image_style', array('style_name' => 'form-preview', 'path' => $url)).'</div>';
Comme toujours, la documentation Drupal a la réponse. Vous devez déplacer le fichier vers le répertoire files. Vous devez également jamais appeler directement une fonction de thème mais appeler wrapper theme
fonctionne donc:
theme_image_style(...) // Don't do this ever
theme('image_style', ...) // Do it like this and make themers happy.
Depuis les documents de l'API:
$ variables Un tableau associatif contenant:
- style_name: nom du style à utiliser pour modifier l'image d'origine.
- path: Le chemin du fichier image par rapport au répertoire Drupal files. Cette fonction ne fonctionne pas avec les images en dehors du répertoire files ni avec les images hébergées à distance.
- alt: le texte alternatif pour les navigateurs textuels.
- title: le texte du titre s'affiche lorsque l'image est survolée dans certains navigateurs populaires.
- attributs: tableau associatif d'attributs à placer dans la balise img.
est préférable d'ajouter votre classe avec la propriété attributes
quelque chose comme
theme_image_style(array('style' => 'form-preview', 'path' => $url,'attributes'=>array('class'=>array('class1', 'class2')));
J'ai dû résoudre ce problème pour servir des fichiers à partir de sites/tous/modules et la réponse peut être vue dans Style d'image de thème pour l'image située dans le répertoire du module
Implique la génération d'un rappel de thème personnalisé qui gère n'importe quel fichier et crée les dérivés de l'image lors de l'exécution de la demande de page, de sorte que vous liez directement au fichier plutôt que de faire une demande asynchrone qui crée l'image.
Meilleures suggestions/contournements bienvenus!