Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] [RESOLU] Problème jUrl et lien relatif

Posted by dadadoux on 07/17/2009 09:25

Bonjour à tous,

Je suis tout nouveaux sur jelix et plus généralement dans l'univers des frameworks ( pardonnez mon noobiisme ^^ ).

Je rencontre un petit problème avec jUrl, en effet je suis entrain de réaliser un projet qui comporte grosso modo 2 pages HTML ( pr l'instant )... J'ai voulu migrer le tout sur jelix afin d'apprendre a me servir de cet outil par la même occasion sauf que voila ... sur chacune de mes pages j'ai une barre de menu avec 2 liens. la page home qui contient le lien Home (actif) et le lien start ( non actif ) et la page start qui contient le lien home (non actif) et le lien start (actif) ... que du classique jusque là. Donc en migrant vers jelix j'ai décidé d'utiliser les templates donc ma page home a migré sur le template main.tpl et ma page start sur le template start.tpl...

il est bon de savoir que la page home correspond au point d'entrée sur le site. ( en mettant "127.0.0.1" , il trouve tout seul index.php qui est configuré pour utilisé le contrôleur par défaut et celui ci pour utiliser la réponse html par défaut et celle ci pour utiliser le template main.tpl ^^ )

Etant donnée que mes 2 pages on 2 fichiers javascripts et 3 fichiers css en commun, j'ai ajouter les liens dans la réponse html par défaut ( comme précisé dans les commentaires ... ). Cependant ma 2eme page ( start ) doit avoir 1 fichier css en plus que l'autre. donc j'ai décidé de rajouter le lien dans le controleur ( avec la ligne : $rep->addCSSLink($gJConfig->urlengine['stepMenuCSS']); )

Jusqu'ici tout est correcte. Sauf que now vient le moment ou je veux utilisé le moteur d'url pour que mes liens de ma barre de menu utilisent le moteur d' url pour l'attribut href.

Donc pour rappelé l'architecture le www du serveur dans lequel il y a mon application ( appelons la : monApp ) , le dossier lib de jelix, et le dossier temps de jelix. dans le dossier monApp il y a un autre dossier www qui correspond correspond au documentroot de mon serveur. voila une vision de l'arborescence :

 monApp-> modules
      -> plugins
      -> responses
      -> scripts
      -> var
      -> www-> jelix
            -> style-> images
            -> script

et donc voila mon principale problème (enfin)... lorsque j'ai ajouté mes liens JS et CSS dans la réponse html par défaut, et que j'arrivai sur ma page avec l'url 127.0.0.1 tout marchait nickel (niveau CSS et JS) le problème apparait lorsque j'utilise le moteur d'url 'configuré par défaut sur "basic_significant". car par exemple l'attribut href de mon lien home à pour valeur ( grace o moteur d'url ) : /index.php/monApp/ ( cette valeur est le resultat de l'expression : href="{jurl 'monApp~index@classic'}" ) qui veut littéralement dire d'utiliser la méthode index() du contrôleur "default" du module monApp pour toutes les requêtes "classiques" ( après vérification l'utilisation de l'expression href="{jurl 'monApp~default:index@classic'}" renvoi exactement la mm réponse ( /index.php/monApp/ ).

On pourrait se dire que tout va bien sauf que non ... car quand je suis sur ma page home ( apres avoir entré l'url http://127.0.0.1 ) et que je reclick sur le lien home de la barre de menu, il change d'url et utilise : http://127.0.0.1/index.php/monApp/ (logique) sauf que du coup plus aucun de mes fichiers CSS et JS ne fonctionne... et je rencontre bien evidemment le même probleme lorsque je click sur le lien "start" qui du coup me retourne l'url : http://127.0.0.1/index.php/monApp/default/start . Alors j'ai bien le rendu html du template pas de problème mais tout mes styles visuel et scripts sont mal référencé, et j'ai donc du mal à voir comment résoude le problème.

2 points important encore avant de vous laissez cogité :

je vous ai montré tout à l'heure comment j'ajoutait une "reference" vers un fichier CSS ( pour rappel : $rep->addCSSLink($gJConfig->urlengine['stepMenuCSS']); ) et donc stepMenuCSS est défini comme suit dans le fichier : defaultconfig.ini.php : stepMenuCSS = "style/stepMenu.css" ( dans la section urlengine )

Second point : si j'utilise le moteur d'url "simple" tout marche impeccablement bien mais bon... J'aime pas ne pas comprendre :p ( pour info le moteur d'url Simple me retourne des valeurs du genre : href="/index.php?module=monApp&action=default:index">

Voilou help me please ( j'ai essayé de détail suffisemment pour que vous ayez tous les éléments pour me répondre... ) Merci de me dire ce que je fait mal ^^ ( à première vu il s'agit juste d'un problème de chemin relatif mal construit mais du coup je vois pas du tout comment le résoudre avec le moteur d'url : basic_significant )

Merci beaucoup de votre patience ... ^^

  [Opened] Re: Problème jUrl et lien relatif

Reply #1 Posted by laurentj on 07/17/2009 10:24

Salut et bienvenue sur Jelix

Jusqu'ici tout est correcte.

Oui je confirme, tu as bien compris le fonctionnement.

Sauf pour tes liens vers les CSS et JS.

Ton problème n'est pas un problème d'utilisation de jUrl, ni même du framework, mais de mauvaise compréhension de résolution des urls dans le navigateur. En effet, par exemple pour ta css, tu donnes un chemin relatif "style/mon.css". Du coup, le navigateur va tenter de resoudre l'url complete relativement à l'url en cours. Quand tu es sur http://127.0.0.1/index.php, il va résoudre en http://127.0.0.1/style/mon.css. Ici tout va bien, puisque c'est la bonne url complète de ta css. Maintenant, quand tu affiches http://127.0.0.1/index.php/foo/bar/, le navigateur va résoudre en http://127.0.0.1/index.php/foo/bar/style/mon.css. Mais bien sûr, à cette adresse là, pas de feuille de style... il se prend un 404.

La solution : indiquer une url absolue de ta css : "/style/mon.css". Note le"/" en tête. le navigateur va comprendre que c'est un chemin à partir de la racine du site, et donc resolvera toujours en http://127.0.0.1/style/mon.css.

Avec le moteur simple, tout fonctionne correctement parce que dans les urls générées, il n'y a pas de chemin...

  [Opened] Re: [RESOLU] Problème jUrl et lien relatif

Reply #2 Posted by bballizlife on 07/17/2009 11:25

Bonjour et bienvenue,

Je te conseil d'utiliser le basePath pour justement être sûr de ne pas avoir ce genre de problème :

  $this->addCSSLink($GLOBALS['gJConfig']->urlengine['basePath'].'style/style.css');

N'importe comment c'est dans la doc

 
Page
  1. Re: Problème jUrl et lien relatif