2009-06-24 12 views
6

Je souhaite utiliser la fonction d'assistance $html->image(...) dans CakePHP pour produire des images, mais j'en ai besoin pour produire une balise img utilisant une URL absolue plutôt que relative (le HTML résultant sera téléchargé et envoyé par courriel dans une entreprise bulletin). Est-ce possible?CakePHP Absolute Image URLs

Ce n'est pas documenté, mais je remarque en examinant le code source que la fonction image peut prendre un tableau comme premier argument. Ce n'est pas tout à fait clair pour moi comment faire fonctionner cela - une tentative naïve de le faire de cette façon produit des URL d'image par rapport à la page en cours plutôt que dans le dossier webroot/img.

Répondre

28

1.x CakePHP la méthode est:

$this->Html->image($this->Html->url('/path_to_image/image.png',true)); 

Dans CakePHP 2.x la méthode est:

$this->Html->image('/path_to_image/image.png', array('fullBase' => true)); 
+1

+1 pour la seule solution réellement portable. – deizel

+0

Fonctionne toujours mais @WebbedIT est correct pour Cake 2.x – 472084

+0

@Jleagle J'ai mis à jour ma réponse pour spécifier le chemin correct dans chaque version. (1.3 était la version actuelle lorsque j'ai posté cette réponse à l'origine) –

1

$html->image('http://example.com/path_to_image/image.png'); devrait faire l'affaire.

+3

Ce devrait être la devise de CakePHP :) –

+1

Que faire si je déplace mon site soit sur example2.com? – Matthew

-4

< img src = "http://example.com/path_to_image/image.png" alt = "" />

parfois, il est préférable de garder la façon la plus simple

+0

Dans le cas de Cake, ce n'est pas expressément le cas. –

0

Vous devriez pouvoir à utiliser:

$html->image('http://[domain]/[path]/[image]') 
+0

Ceci est correct, cela ne devrait pas être downvoted. –

0

Avec l'image du lien: -

<?php echo $this->Html->link($this->Html->image('logo.png',array('alt'=>'Logo')),'/', array('fullBase'=>true)); ?> 

seulement Images Affichage: -

<?php echo $this->Html->image('logo.png',array('alt'=>'Logo')),'/', array('fullBase'=>true); ?>