Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour.
Je suis nouveau dans l'utilisation de ce framework donc vous pouvez être sûr que je vais vous solliciter souvent. Par conséquent, j'espère que vous êtes patient * pas taper *
Un de mes problèmes actuels est le suivant [ et sûrement très simple à vos yeux ] :
Je souhaite intégrer une feuille de style au site que je développe. J'ai l'architecture suivante :
someone/ /library /PHP-INF /ctrl /model /views /filters /helpers /scripts /index /public /images /scripts /style
Je mets le code suivant dans header.phtml :
<!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"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <link rel="stylesheet" href="<?php echo $this -> baseURL ?>/public/style/general.css" type="text/css" /> <title><?php echo $this -> title ?></title> </head> <body>
Le fichier header.phtml est situé dans le dossier ./PHP-INF/views/.
$this -> baseURL renvoie /someone.
Voici comment j'appelle la vue header.phtml :
<?php echo $this -> render( 'header.phtml' ) ?>
Et quand je vais sur la page désiré, il n'y a aucun style d'appliqué.
Quand j'affiche le code source, j'ai ceci :
<link rel="stylesheet" href="/someone/public/style/general.css" type="text/css" />
Je me suis donc dit qu'il pensait que / est la racine du disque. Donc, j'ai mis le chemin absolu, ce qui me donne exactement :
<link rel="stylesheet" href="C:/xampp/htdocs/someone/public/style/general.css" type="text/css" />
Pas mieux.
Voilà déjà, j'comprends pas pourquoi ça ne marche pas
Ensuite, j'ai remarqué que quand je changeais le code source en remplaçant baseURL par ../ ou ../../, etc [ dans le but de trouver le chemin, bref ] et bien, j'ai toujours la ligne suivante dans le code source :
<link rel="stylesheet" href="C:/xampp/htdocs/someone/public/style/general.css" type="text/css" />
J'ai cru que c'était dû à une mise en cache, mais même en forçant le rechargement .. Pas mieux.
Je me suis donc demandé si ZF gérait un système de cache ?
Merci par avance de votre aide.
Cordialement,
L.
Hors ligne
Il faut utiliser la racine de ton serveur web, pas la racine de ton disque dur.
Si la racine de ton serveur web est /someone/public, tu dois mettre juste /style/general.css
Hors ligne
La racine de mon serveur web est /someone/ mais ça n'a rien donné.
Je le signale d'ailleurs dans mon post
Lio a écrit:
Je mets le code suivant dans header.phtml :
Code:
<!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"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <link rel="stylesheet" href="<?php echo $this -> baseURL ?>/public/style/general.css" type="text/css" /> <title><?php echo $this -> title ?></title> </head> <body>Le fichier header.phtml est situé dans le dossier ./PHP-INF/views/.
$this -> baseURL renvoie /someone/.
Pour le problème de cache, j'ai remis avec $this -> baseURL & la source s'est changée comme il faut. Mais j'ai toujours mon problème de style évidemment.
Cordialement,
L.
Hors ligne
essaye d'afficher la css directement... tu pourras déjà voir si elle est "en ligne"
http://exemple.com/someone/public/style/general.css
Hors ligne
Personnellement, je ne m'appuierai pas sur un framework pour savoir comment est configuré mon apache... (a forciori vu le nombre de bug que j'ai remonté sur baseURL depuis la 0.2 du ZF)
la variable $_SERVER['DOCUMENT_ROOT'] est indépendante du ZF et semble qd même préférable. On parle d'accéder a une ressource statique type fichier css. Ce n'est donc pas lié avec le ZF.
La seule source absolument fiable, c'est le httpd.conf, car le document root ne te donne aucune indication sur les alias qui ont pu être définis.
Une dernière piste. L'erreur la plus courante dans ce type de cas est lié au rewriting. Si tu as des règles du genre
RewriteEngine on
RewriteRule .* /index.php [L]
Ne cherche pas plus loin. Aucune ressource statique n'est accessible dans ce cas la. Il faut par exemple ajouter une rewirteCond qui exclue du rewriting les fichiers existant, ou ajouter une rewriteRule avant celle de l'index et qui matchera les ressources statiques.
Hors ligne
A propos de ce genre de soucis il existe pas mal de posts a ce sujet:
http://www.z-f.fr/forum/viewtopic.php?id=353
http://www.z-f.fr/forum/viewtopic.php?id=294
Si ça n'est pas assez, un petite recherche avec le moit "htaccess" devrait t'aider encore un peu plus
Hors ligne
TiTerm a écrit:
Personnellement, je ne m'appuierai pas sur un framework pour savoir comment est configuré mon apache... (a forciori vu le nombre de bug que j'ai remonté sur baseURL depuis la 0.2 du ZF)
la variable $_SERVER['DOCUMENT_ROOT'] est indépendante du ZF et semble qd même préférable. On parle d'accéder a une ressource statique type fichier css. Ce n'est donc pas lié avec le ZF.
La seule source absolument fiable, c'est le httpd.conf, car le document root ne te donne aucune indication sur les alias qui ont pu être définis.
Une dernière piste. L'erreur la plus courante dans ce type de cas est lié au rewriting. Si tu as des règles du genre
RewriteEngine on
RewriteRule .* /index.php [L]
Ne cherche pas plus loin. Aucune ressource statique n'est accessible dans ce cas la. Il faut par exemple ajouter une rewirteCond qui exclue du rewriting les fichiers existant, ou ajouter une rewriteRule avant celle de l'index et qui matchera les ressources statiques.
Le genre d'erreur qui te fait perdre un temps dingue pour rien...
Hors ligne
Merci, je ne risquais pas de penser que le problème pouvait venir de mes .htaccess.
Alors voilà, à la base de mon site, j'ai le .htaccess suivant :
RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
Dans le répertoire public, j'ai le .htaccess suivant :
Deny from all
Le problème vient-il de là ? Aurais-je un .htaccess incorrect ?
[EDIT] --------------------------------------------------------------------------------
Bon, apparement, le .htaccess dans le dossier public/ faisait chier.
Pourtant, j'arrive bien à inclure les fichiers .php qui sont dans library, et dans PHP-INF. Et ces deux dossiers ont également ce .htaccess.
Quelqu'un saurait me dire comment autoriser via le .htaccess à inclure les css, images .. ?
Cordialement,
L.
Dernière modification par Lio (25-01-2008 18:37:40)
Hors ligne
Si ton localhost est 192.168.1.1, par exemple, et que tu as un dossier 'App_WWW' (par exemple) :
Tu accèdes donc à tes site via :
http://192.168.1.1/App_WWW
Il faut rajouter dans ton htaccess :
RewriteEngine on RewriteBase /App_WWW RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
Hors ligne
Messieurs,
je vous remercie pour votre participation & votre aide
Cordialement,
L.
Hors ligne