Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gestion d'images avec PHPLIB

2 réponses
Avatar
Raphael Ajax
Bonjour,

j'essaie de faire un site sous PHP5 et j'utilise la classe Template de
PHPLIB pour gérer des template. Mon problème est qu'il m'est impossible
d'afficher des images dans mon template... Si j'ai un fichier index.tpl
comme celui qui suit, les variables {titre} et {texte} sont correctement
remplacées mais les images ne sont pas prises en charge, c'est l'attribut
alt="" qui s'affiche. Et pourtant j'ai essayé d'indiquer tout les types
de chemins possibles ( en absolu ou relatif), j'ai même essayé de mettre
mes images dans le dossier du template ET dans le dossier du fichier php
qui instancie le moteur de template et....rien.

Alors selon vous est-ce qu'il s'agit d'un bug, d'une erreur de ma part ou
est-ce que l'on n'est pas sensé appeler d'images directement depuis le
template ??

Merci de votre aide!

---Ci-dessous le template ---

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head>
<title>Mon titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
@import url(styles.css);
</style>
</head>
<body>
<div class="blocs_contenu">

<h3>{titre}</h3>
<p>

{texte}
{image}

<img src="entete.jpg" alt="mon entete" /> <img src="./entete.jpg"
alt="mon entete" /> <img src="../img/fleche_menu.png" width="13"
height="12" border="0" alt="fleche"> <img
src="/var/www/phplib/img/fleche_menu.png" width="13" height="12"
border="0" alt="fleche">

</p>

</div>

</body>
</html>

2 réponses

Avatar
Olivier Miakinen

j'essaie de faire un site sous PHP5 et j'utilise la classe Template de
PHPLIB pour gérer des template.


Je n'ai jamais utilisé de moteurs de Template, mais je vais essayer de
t'aider quand même.

Mon problème est qu'il m'est impossible
d'afficher des images dans mon template... Si j'ai un fichier index.tpl
comme celui qui suit, les variables {titre} et {texte} sont correctement
remplacées mais les images ne sont pas prises en charge, c'est l'attribut
alt="" qui s'affiche.


Ah. Je suppose que soit l'image n'est pas sur le serveur, soit le
chemine d'accès que tu donnes n'est pas le bon.

Et pourtant j'ai essayé d'indiquer tout les types
de chemins possibles ( en absolu ou relatif),


En voyant l'exemple plus loin, je pense que non. Tu sais qu'en désespoir
de cause tu peux donner un chemin vraiment complet, y compris le
« http://ton-serveur ».

j'ai même essayé de mettre
mes images dans le dossier du template ET dans le dossier du fichier php
qui instancie le moteur de template et....rien.


Bon, et si tu nous donnais l'url où l'on pourrait constater le problème
nous-mêmes ?

Alors selon vous est-ce qu'il s'agit d'un bug, d'une erreur de ma part


À mon humble avis, c'est une erreur de ta part.

ou est-ce que l'on n'est pas sensé appeler d'images directement depuis le
template ??


Le lien vers l'image est interprété par le navigateur qui reçoit la page
HTML résultant de ta page PHP, elle-même résultant de ton template. Tout
d'abord quelle est l'url de ta page ? Et sais-tu accéder directement à
l'image en tapant son url dans le navigateur ?

---Ci-dessous le template ---

[...]

<img src="entete.jpg" alt="mon entete" />


Ici, entete.jpg doit être à priori au même endroit que ton fichier .php.

<img src="./entete.jpg" alt="mon entete" />


Strictement identique à l'exemple précédent.

<img src="../img/fleche_menu.png" width="13" height="12" border="0" alt="fleche">


Là, si ton fichier .php est sous http://example.com/x/y/z, alors le
fichier fleche_menu.png doit être sous http://example.com/x/y/img.

<img src="/var/www/phplib/img/fleche_menu.png" width="13" height="12" border="0" alt="fleche">


Aucune chance que cela fonctionne. Je parie que « /var/www/phplib/ »
fait partie de l'arborescence interne sur ton serveur, et n'apparaît
pas dans l'URL. Or c'est l'URL qu'il faut fournir au navigateur (ou un
chemin relatif à partir de l'URL courante).

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
Christophe, elitemediacompany.com
Alors selon vous est-ce qu'il s'agit d'un bug, d'une erreur de ma part ou
est-ce que l'on n'est pas sensé appeler d'images directement depuis le
template ??


Bug je ne pense pas.
par contre, tu ne dois pas donner le chemin depuis le fichier template, mais
bien depuis le script qui appelle le template.
je m'explique :

Soit une arborescence comme :

/images
/templates
index.php

Tu ne peux pas envoyer par ton script dans index.php quelque chose comme
<img src="monimage.jpg"> pour substituer dans ton template {image} ca ne
marcheras pas.

Le chemin doit etre indiqué depuis le script php qui appelle le template.

Soit dans mon exemple tu devrais écrire dans ton index.php :
$tpl->set_var('image', '<img src="images/monimage.jpg">');

A l'appel de ton script index.php, il n'y a pas de raisons que ca ne
fonctionne pas

Christophe