Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Je bloque depuis deux jours sur un point qui, pourtant, ne devrait pas poser de problème.
J'essaie de spécifier un fichier de CSS dans mon "loyout".
quickstart/application/layouts/scripts/layout.phtml
<?php echo $this->doctype() ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <?php echo $this->headLink()->appendStylesheet('css.css') ?> </head> <body> ..
Question : Ou faut-il placer le fichier "css.css"?
J'ai effectué un bon nombre de tentatives... Mais le fichier ne se charge pas.
"GET /css.css HTTP/1.1" 404 1563
Je suppose que l'application essaie de charger la méthode "index" du contrôleur "css.css".
Quelqu'un pourrait-il me donner un coup de main?
Merci,
Denis
Dernière modification par Denis. Beurive (17-09-2010 21:55:21)
Hors ligne
Pourquoi ne pas simplement placer ton fichier css.css dans ton dossier public ?
Ce fichier est-il dynamique ou statique ?
Hors ligne
Salut,
J'ai trouvé une solution :
Dans le fichier "quickstart/public/.htaccess", il faut ajouter une règle de réécriture d'URL :
RewriteRule !\.(js|ico|gif|jpg|css|htm|jpeg|jgz|swf)$ index.php
Pour le code :
<?php echo $this->headLink()->appendStylesheet('css.css') ?>
Il faut placer le fichier "css.css" dans le répertoire "quickstart/public/".
Voyez-vous une autre solution, qui présenterait des avantages?
Merci,
Denis
Hors ligne
My_Sic a écrit:
Pourquoi ne pas simplement placer ton fichier css.css dans ton dossier public ?
Ce fichier est-il dynamique ou statique ?
Salut,
Je te remercie pour ta réponse. C'est effectivement ce que je fais. Mais, pour que cela fonctionne, il faut ajouter une règle aux règles de réécriture d'URLs (CF ma réponse ci-dessus).
Sans la règle de réécriture, l'application va essayer d'exécuter la méthode "index" du contrôleur "css.css" (si je ne me trompe pas).
A+
Hors ligne
Normalement ton .htaccess doit contenir ça :
RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
Cela suffit amplement, car il va tester la présence d'un dossier/fichier/lien/... répondant exactement à la requête. Ce qui est le cas pour ton fichier css.css
Hors ligne
My_Sic a écrit:
Normalement ton .htaccess doit contenir ça :
Code:
RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]Cela suffit amplement, car il va tester la présence d'un dossier/fichier/lien/... répondant exactement à la requête. Ce qui est le cas pour ton fichier css.css
Le contenu que tu présentes correspond, en effet au contenu par défaut du fichier ".htaccess". Sauf que: En ce qui me concerne, j'ai besoin de rajouter la ligne que j'ai mentionnée.
RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule !\.(js|ico|gif|jpg|css|htm|jpeg|jgz|swf)$ index.php RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
Sans cette ligne :
192.x.x.x - - [17/Sep/2010:16:43:39 +0200] "GET /css.css HTTP/1.1" 404 1563
Avec cette ligne :
192.x.x.x - - [17/Sep/2010:17:06:25 +0200] "GET /css.css HTTP/1.1" 200 -
Il y a un mystère...
Oh... Mais je vois la différence entre ton fichier ".htaccess" et mon fichier d'origine. Dans mon fichier "d'origine", je n'ai pas la ligne suivante :
RewriteCond %{REQUEST_FILENAME} -f
Je ne sais pas ce que cela signifie. Je vais voir la documentation.
A+
Dernière modification par Denis. Beurive (17-09-2010 17:37:51)
Hors ligne
Aucun mystère, il te manque la directive la plus importante :
RewriteCond %{REQUEST_FILENAME} -f [OR]
Hors ligne
My_Sic a écrit:
Aucun mystère, il te manque la directive la plus importante :
Code:
RewriteCond %{REQUEST_FILENAME} -f [OR]
Oui, effectivement.
Je te remercie pour ton aide! Tu m'as fait gagner un temps précieux.
Remarque : J'ai créé mon projet en suivant la documentation du framework, accessible sur le site de ZEND. Dans cette documentation il est préconisé d'utiliser l'outil "zf.sh". Il semble que le fichier "public/.htaccess" généré par cet outil ne comporte pas la ligne qui me manquait (j'utilise la version 1.10 du framework).
A+
Dernière modification par Denis. Beurive (17-09-2010 17:43:54)
Hors ligne
Le problème est résolu
Hors ligne
Bonjour,
Est-ce que tu peux éditer ton 1er message et ajouter [Résolu] devant le titre ?
Je te remercie d'avance,
A+, Philippe
Hors ligne
Ce qui est quand même étrange est que vous ayez besoin du '-f' au lieu de '-s' ... La seule différence entre les deux est que '-s' demande à ce que le fichier ait une taille supérieure à 0 par rapport à '-f'. Je n'ai pas besoin d'ajouter cela pour avoir un fichier css dans un fichier écrit dans le répertoire 'public/styles'. On dirait qu'apache n'arrive pas à déterminer le taille de vos fichiers.
Hors ligne