lien avec les templates smarty

Eléphant du PHP | 147 Messages

08 mai 2007, 14:15

Bonjour,

J'utilise le template smarty (je découvre), j'assigne une varible ainsi
$smarty->assign('racine', dirname(__FILE__));
et je souhaite la recupérer dans mon template pour inserer ma feuille de style ainsi
<link href="{$racine}/CSS/style.css" rel="stylesheet" type="text/css">
Dans ma log apache j'obtient l'erreur suivante
[Tue May 08 14:14:58 2007] [error] [client 127.0.0.1] File does not exist: c:/program files/easyphp1-8/www/livres113/smarty/templates/{$racine}/CSS/style.css
Merci de votre aide

Mammouth du PHP | 991 Messages

08 mai 2007, 14:41

essaye {racine] au lieu de {$racine}
DevOps, Symfony4, Hoa

Eléphant du PHP | 147 Messages

08 mai 2007, 14:47

Dans le contenue de ma page j'ai aviché la valeur de {$racine} elle est ok

Il y a un truc étrange dans IE la feuille de style est bien insérée

ViPHP
ViPHP | 5924 Messages

08 mai 2007, 19:52

Tu peux nous mettre un petit peu plus de code (en gros la partie où tu génère la page avec smarty) ?

Eléphant du PHP | 147 Messages

08 mai 2007, 22:17

voila le code ou est généré la page avec smarty

Code : Tout sélectionner

<?php // load Smarty library require('Smarty.class.php'); $smarty = new Smarty; $smarty->template_dir = '/smarty/templates'; $smarty->config_dir = '/smarty/config'; $smarty->cache_dir = 'C:\Program Files\EasyPHP1-8\smarty\cache'; $smarty->compile_dir = 'C:\Program Files\EasyPHP1-8\smarty\templates_c'; $smarty->assign('racine', dirname(__FILE__)); $smarty->display('index.tpl'); ?>

ViPHP
ViPHP | 5924 Messages

08 mai 2007, 23:36

:-/
Et le template ?

Eléphant du PHP | 147 Messages

08 mai 2007, 23:39

<!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>Maquette</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
		<meta http-equiv="Content-Style-Type" content="text/css" />
		<meta http-equiv="Content-Language" content="fr" />
		<link href="{$racine}/CSS/style.css" rel="stylesheet" type="text/css">
	</head>
Le reste c'est juste du html

ViPHP
ViPHP | 5924 Messages

08 mai 2007, 23:59

Est ce que tu as des fichiers dans le dossier C:\Program Files\EasyPHP1-8\smarty\templates_c ?

Eléphant du PHP | 147 Messages

09 mai 2007, 00:05

Voila le fichier dans le dossier dont tu me parles

Code : Tout sélectionner

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Maquette</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Language" content="fr" /> <link href="<?php echo $this->_tpl_vars['racine']; ?> /CSS/style.css" rel="stylesheet" type="text/css"> </head>
Le caractère spécial est un retour a la ligne.

Le problème doit venir de là mais comment résoudre ce souci?

ViPHP
ViPHP | 5924 Messages

09 mai 2007, 00:14

Ca me parait juste. Je ne vois pas d'erreur...
De quel caractère spécial parles tu ?

ViPHP
ViPHP | 5924 Messages

09 mai 2007, 00:19

Si, j'ai une idée, peux tu me donner le code de la page html une fois la page générée ?

Eléphant du PHP | 147 Messages

09 mai 2007, 00:26

Dans le notepad j'avais un tit caré a la con qui c'est transfomé en saut de ligne lors du copier collé

voila le html final :

Code : Tout sélectionner

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Maquette</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Language" content="fr" /> <link href="C:\Program Files\EasyPHP1-8\www\livres113/CSS/style.css" rel="stylesheet" type="text/css"> </head>
Cela viens peut-etre des antislash

Il y a peut-etre une autre méthode car c'est vilain ce que je fait je trouve.

En fait j'ai fait sa ca je fais de l'url rewriting. J'ai des lien du type /livres/catalogue qui coreponde a la page index.php&page=catal_livre

Lorsque j'allais sur ce genre de page je n'avais plus le css donc je pené spécifier la racine du site en dur mais bon ma methode semble foireuse quand meme.

ViPHP
ViPHP | 5924 Messages

09 mai 2007, 01:02

En fait, je n'avais pas tilté, __FILE__ ca renvoie le chemin du fichier, pas son adresse. Si tu mets le chemin du fichier dans le code html, un client ne le trouvera jamais.
Il faut utiliser plutôt 'http://www.ndd.tld' . $_SERVER['PHP_SELF']

Eléphant du PHP | 147 Messages

09 mai 2007, 13:05

Merci pour ton aide c'est ok

ViPHP
ViPHP | 5924 Messages

09 mai 2007, 13:12

De rien.
Au passage, tu as pris smarty, c'est un bon choix :)