2012-12-24 3 views
-1

Je suis bloqué sur un barrage routier avec la plus simple des choses. Dans Drupal 6, j'essaie de prendre un chemin entré par l'utilisateur à une image et de produire cette image sur la page. Voici un peu de code:Theme_image() ne renvoie rien

$slogan_image = theme('image', $slogan_image_path); 
dpm("\$slogan_image_path = '$slogan_image_path'"); 
dpm("\$slogan_image = '$slogan_image'"); 

La sortie devel lit:

$slogan_image_path = '/sites/default/files/images/Family.jpg' 
$slogan_image = '' 

Il y a une image à '/sites/default/files/images/Family.jpg'; Si je navigue jusqu'à www.mysite.com/sites/default/files/images/Family.jpg, l'image sera affichée.

Qu'est-ce que je fais mal? Merci.

Répondre

0

Le problème était que mon chemin a commencé par une barre oblique. Les chemins Drupal n'ont pas cette barre oblique initiale. Drupal étant open source, je pouvais regarder se référer à the Drupal 6 api docs et voir le code pour theme_image inclus cette ligne:

$url = (url($path) == $path) ? $path : (base_path() . $path); 

m'a montré que Drupal serait préfixer mon chemin avec le base_path(). L'exécution de ce code moi-même, dans une page Execute PHP, m'a permis de voir que theme_image finirait par utiliser //sites/default/files/images/Family.jpg comme $ url, ce qui est clairement une valeur illégale.

Je pensais que j'ajouterais cette courte explication à mon problème trivial pour aider les débutants à voir comment je l'ai débuggé.