Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je travaille sur un CMS avec CSS dynamique et j'utilise Zend en implémentant le MVC.
Le problème auquel je fais face :
J'ai une vue dans laquelle je voudrais appelé un CSS dynamique dont le fichier porte l'extension .php
code ma vue :
<link href="./smarty/templates/CSSdyna.php" rel="stylesheet" type="text/css" />
Le problème se situepeut être dans la réécriture des URL , mon fichier .htaccess ressemble à ca :
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css|swf)$ index.php
et si j'ajoute l'extension php dans la rewriterule j'accède à mon fichier php, le problème est que celui-ci n'accède plus aux aures fichiers en l'occurrence les modèles dont j'ai absolment besoin pour créer mon CSS dynamiquement.
Si je n'ajoute pas cette extension dans la rwriterule je ne peux pas accèder à ce fichier php qui me sert de CSS...
Comment faire?
merci par avance.
Dernière modification par alexGPHY (12-12-2007 13:18:49)
Hors ligne
Avant le rewriteRule, il faut ajouter une ou 2 rewriteCond sur la non existence du fichier ou du répertoire
De cette façon, tu ne passes la main au bootstrap que si la ressource n'existe pas.
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule !\.(js|ico|gif|jpg|png|css|swf)$ index.php
Hors ligne
à une seule condition n'avoir aucun script php dans le dossier www du serveur ce qui n'est pas toujours possible
car sinon tu cours le risque de voir un script chargé et exécuté par un appel intempestif
tu peux aussi changer le reg expr de ta règle
RewriteRule !(CSSdyna\.php)|\.(js|ico|gif|jpg|png|css|swf)$ index.php
tout ce qui n'est pas CSSdyna.php ou .js ou .ico ou .gif ou .png ou .css ou .swf est redirigé vers index .php
il y a encore une autre solution
tu nomme ton fichier CSSdyna.css.php et tu mets dans ta page
<link href="./smarty/templates/CSSdyna.css" rel="stylesheet" type="text/css" />
tu ajoute l'option multiviews sur tu serveur apache (.htaccess Options MultiView)
du coup apache va charger et interpréter le php de ton CSSDyna alors que ton client le croit statique
A+JYT
Hors ligne
Salut,
en mettant un .htaccess dans ./smarty/templates/ contenant RewriteEngine Off ??
(c vraiment une proposition à l'arrache mais il me semble avoir vu ça dans un tuto)
++
Hors ligne
Merci beaucoup pour vos réponses très rapides!
J'ai enfin trouvé la solution qui m'arrangeait au mieux (rewiteengine off ne fonctionne pas, et le faire dans un controlleur n'est pas ce qui m'arrange le mieux) !
J'ai changé mon .htaccess par ca :
RewriteEngine on
RewriteCond %{Request_URI} !^(.*/CSSdyna.php$)
RewriteRule !\.(js|ico|gif|jpg|png|css|swf)$ index.php
qui me laisse libre accès à mon fichier CSSdyna.php
ensuite je suis obligé de redéclaré mon include path dans ce fichier (car je n'y accède pas depuis mon bootstrap ou tout est déclaré) pour pouvoir accèder aux fichier php dont j'ai besoin.
ca donne qqch comme ca :
set_include_path(
'.'
.PATH_SEPARATOR . '../../library/'
.PATH_SEPARATOR . '../../models/'
.PATH_SEPARATOR . '../../library/Smarty/libs/'
.PATH_SEPARATOR . '../../library/Zend/'
.PATH_SEPARATOR . '../../conf/'
.PATH_SEPARATOR . get_include_path()
);
include "Loader.php";
Zend_Loader::loadClass('SiteQueries');
un grand merci quand même pour votre rapidité et votre clairvoyance!
Hors ligne
je t'invite à ajouter la mention [résolu] dans le titre de ton post
+
Hors ligne
Pages: 1