2013-03-30 6 views
1

Existe-t-il un moyen d'obtenir la méthode css de CakePHP pour émettre un chemin relatif au document courant?Chemin relatif vers le fichier CSS?

Ie, en utilisant ce code:

$this->Html->css('tutorial'); 

Au lieu de générer

<link rel="stylesheet" type="text/css" href="/Tutorial/css/tutorial.css" /> 

il lieu de générer quelque chose comme

<link rel="stylesheet" type="text/css" href="../../css/tutorial.css" /> 

Je sais que c'est loufoque, mais je suis cherche à créer quelque chose qui peut être récupéré en utilisant wget, puis vu hors ligne. J'ai demandé à CakePHP de gérer les extensions .html (en utilisant Router :: parseExtensions ('html');), puis de définir des routes vers le controller/action qui ressemblent à une structure de répertoires pour les fichiers HTML statiques. Je suis à la recherche d'un moyen de générer une URL relative à la page de sorte que lorsque je sauvegarde les fichiers (en utilisant wget), ils fonctionnent quand ils sont lus depuis le disque dur.

Comme thaJeztah indique ci-dessous, cela n'est pas possible dans CakePHP. Parce que CakePHP mappe abstraitement les URL aux contrôleurs & actions, il n'a plus vraiment la notion de "servir un fichier" (sauf dans/pages/subdirs, etc) donc la seule chose qui a du sens pour CakePHP est de fournir une URL qui commence à la racine & fonctionne jusqu'aux fichiers .CSS. (Merci beaucoup à thaJeztah pour avoir signalé!)

+0

Ils sont tous les deux chemins relatifs. –

+0

Est-ce que css ("../../ tutorial") fonctionne? –

+0

Huh. Les URL commençant par "/" sont, apparemment, relatives. Je pensais à "par rapport au document courant" – MikeTheTall

Répondre

2

De l'API

Si $ path est préfixé avec '/', le chemin sera par rapport à la Webroot de votre application. Dans le cas contraire, le chemin sera relatif à votre chemin CSS

Ainsi, vous pouvez commencer le chemin avec un / puis le point à partir de là, de cette façon vous n'avez pas besoin de revenir en arrière dans les répertoires.

Crédit this answer pour avoir signalé

+0

Je cherche un chemin relatif au document (au lieu d'être relatif au dossier webroot, ou au chemin CSS) – MikeTheTall

+0

Je comprends, mais je pensais que vous pouviez juste tapez le chemin relatif au site Web au lieu d'avoir à retourner dans les répertoires du dossier CSS –

+0

Je sais que c'est goofy, mais je cherche à créer quelque chose qui peut être récupéré en utilisant wget, puis vu hors ligne. Cela doit donc être relatif au document. – MikeTheTall

0

Comme un côté note, vous pouvez réellement obtenir une copie d'un site Web en utilisant la commande « wget ». (Il y a même un joli "Visual WGet" pour Windows, qui présente une interface graphique conviviale pour toutes les options de la ligne de commande). wget téléchargera tous les fichiers et (si vous utilisez l'option -k/--convert-links) corrigera tous les liens pour qu'ils soient relatifs (à chaque document) afin qu'ils fonctionnent hors ligne.

Il est important de attendre jusqu'à ce que wget se termine complètement, comme wget fait cette chose en deux phases bizarre où il a obtient tous les fichiers et retourne ensuite et fixe les liens

Questions connexes