2010-11-16 3 views
0

J'utilise SF 1.3.6. J'ai des fichiers texte statiques (HTML) que je veux pouvoir afficher dans une fenêtre contextuelle.Symfony 1.3.6 - javascript popup windw - comment?

J'ai essayé ceci:

<a href="javascript:showPopup('foobar.html', 'all about foobar')">foobar</a><br /> 

<script type="text/javascript"> 
function showPopup(url, title) { window.open(url,title,"menubar=no,width=430,height=360,toolbar=no");} 
</script> 

je reçois un sf404Exception quand je clique sur le lien. Comment puis-je résoudre ce problème?

Remarque: Je ne veux pas vraiment écrire une route, et une action et un modèle pour ces fichiers statiques - y at-il une autre façon d'obtenir des popups avec SF?

[Modifier]

Ceci est le contenu de mon .htaccess d'origine.

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    #force everything to www so URLs look the same 
    RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
    RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

    # uncomment the following line, if you are having trouble 
    # getting no_script_name to work 
    #RewriteBase/

    # we skip all files with .something 
    #RewriteCond %{REQUEST_URI} \..+$ 
    #RewriteCond %{REQUEST_URI} !\.html$ 
    #RewriteRule .* - [L] 

    #redirect on trailing slash (otherwise, Symfony will 404) 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)/$ /$1 [R=302,L] 

    # we check if the .html version is here (caching) 
    RewriteRule ^$ index.html [QSA] 
    RewriteRule ^([^.]+)$ $1.html [QSA] 
    RewriteCond %{REQUEST_FILENAME} !-f 

    # no, so we redirect to our front web controller 
    RewriteRule ^(.*)$ index.php [QSA,L] 
</IfModule> 

Je l'ai remplacé par le script de Jeremy. J'ai ensuite redémarré Apache mais je reçois la même erreur

404 | Introuvable sfError404Exception Module vide et/ou action après analyse de l'URL "/foobar.html" (/).

+0

Est-ce que foobar.html se trouve au niveau supérieur du dossier Web? –

+0

oui l'emplacement du fichier est comme: web/foobar.html – skyeagle

Répondre

1

Le fichier Symfony .htaccess par défaut doit avoir une ligne pour servir les fichiers qui existent déjà dans le répertoire Web. Assurez-vous que le chemin que vous spécifiez pour le fichier existe dans le site Web. Voici les lignes concernées .htaccess:

# we check if the .html version is here (caching) 
RewriteRule ^$ index.html [QSA] 
RewriteRule ^([^.]+)$ $1.html [QSA] 
RewriteCond %{REQUEST_FILENAME} !-f 

Voici mon plein .htaccess avec d'autres améliorations:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    #force everything to www so URLs look the same 
    RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
    RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

    # uncomment the following line, if you are having trouble 
    # getting no_script_name to work 
    #RewriteBase/

    # we skip all files with .something 
    #RewriteCond %{REQUEST_URI} \..+$ 
    #RewriteCond %{REQUEST_URI} !\.html$ 
    #RewriteRule .* - [L] 

    #redirect on trailing slash (otherwise, Symfony will 404) 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)/$ /$1 [R=302,L] 

    # we check if the .html version is here (caching) 
    RewriteRule ^$ index.html [QSA] 
    RewriteRule ^([^.]+)$ $1.html [QSA] 
    RewriteCond %{REQUEST_FILENAME} !-f 

    # no, so we redirect to our front web controller 
    RewriteRule ^(.*)$ index.php [QSA,L] 
</IfModule> 
+0

Salut Jeremy, s'il vous plaît voir ma question éditée. Merci – skyeagle

0

Où stockez-vous vos fichiers statiques? Pour y accéder avec /foobar.html vous devez les mettre dans le répertoire web/.

De même, n'oubliez pas de les rendre lisibles par le serveur Web.

+0

Salut Kuba: mes fichiers sont dans le dossier web et ils sont lisibles par tous (mode: 644) – skyeagle

+0

Je ne dirais pas que c'est un problème de symfony ou un problème de .htaccess. Je viens de le tester avec un .htaccess par défaut sur le projet vanilla symfony et cela fonctionne simplement (permissions 644). Avez-vous configuré votre hôte comme indiqué dans les documents symfony? –

1

Essayez d'ajouter "/" à foobar.html.

javascript:showPopup('/foobar.html', 'all about foobar') 

Si vous êtes dans un environnement de dev, puis en appelant foobar.html serait en fait appellerez frontend_dev.php/foobar.html. Ajouter le "/" principal supprime le frontend_dev.php.

Questions connexes