Raccourcis : Contenu - rubriques - sous rubriques
FR

Piste:

Wiki: Plan du site - Derniers changements - Back link

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

fr:tutoriels:jurl [2009/09/22 14:33]
foxmask créée
fr:tutoriels:jurl [2009/09/22 14:42]
foxmask
Ligne 1: Ligne 1:
-====== jUrl, le moteur d'URLs Automatiques de Jelix. ​======+====== jUrl ======
  
 +Vous trouverez ici une compilation d'​articles sur jUrl
  
-Ce petit article aborde 2 points du moteur d'​URLs,​  +[[fr:tutoriels:jurl:article1|jUrl, le moteur d'​URLs ​automatique ​de Jelix]]
- +
-  -  l'​écriture d'URLs "​Jelixiennes"​ +
-  -  les moteurs d'URLs de Jelix +
- +
-===== 1 - Introduction ===== +
- +
- +
-Classiquement,​ pour ajouter un lien dans une page, on se contente de faire des URLs manuellement comme suit  +
- +
-<​code>​ +
-<a href="/​mon/​chemin/​vers/​mon/​lien/​interne"​ title="​mon lien tout pas beau">​MonBeauSite</​a>​ +
-</​code>​ +
- +
-Ce pendant si vous installez cette application dans un environnement dont le chemin est différent,  +
-le petit click sur le lien aboutira sur une page 404. +
- +
-===== 2 - Ecriture d'URLs "​Jelixiennes"​ ===== +
- +
- +
-Pour éviter l'​avatar précédant,​ __jUrl__ fait son oeuvre de façon tout à fait simple, comme suit : +
-<​code>​ +
-<a href="​{jurl '​news~default:index',​array('​parm1'​=>'​value1'​)}">​MonBeauSite</​a>​ +
-</​code>​ +
- +
-où __news__ est mon __module__, __default__ est mon __contrôleur__,​ et __index__ ma __méthode__. +
- +
-ce qui génèrera l'url http://​localhost/​index.php?​module=news&​action=default:​index&​parm1=value1 +
- +
-Mais il y a bien évidement moyen d'​avoir des URLs beaucoup plus "​propres"​ (voir ci-dessous) +
- +
-Une autre façon de procéder, est d'​utiliser ​jUrl dans son contrôleur et d'​assigner le résultat au template : +
- +
-==== le contrôleur ==== +
- +
-<code php> +
-function index() { +
-    $rep = $this->​getResponse('​html'​);​ +
-    $monUrl = jurl::​get('​module~controlleur:​action'​,array('​parm1'​=>'​value1'​));​ +
-    $tpl = new jTpl(); +
-    $tpl->​assign('​monurl',​$monurl);​ +
-    $rep->​body->​assign('​MAIN',​ $tpl->​fetch('​mon_template'​);​ +
-    return $rep; +
-+
-</​code>​ +
-==== le template ==== +
- +
-<​code>​ +
-<a href="​{$monurl}">​MonBeauSite</​a>​ +
-</​code>​ +
- +
-Cas concret de cette utilisation au travers du controleur :  +
- +
-l'​utilisation de script AJAX ayant bien évidemment besoin d'une url pour envoyer les données au serveur. +
- +
-Dans le template quand nous codons le javascript nous mettons entre {literal}...{/​literal} le code javascript que jelix ne doit pas interpreter. +
- +
-Par conséquent l'URL ne peut être dynamiquement allouée à notre template,  +
-il faut donc générer le code javascript dans sa méthode avec l'URL qui elle sera bien issue de jUrl(). +
- +
-voici ce que cela donne par exemple pour un champ de recherche dynamique : +
-==== le controleur ==== +
- +
-<code php> +
-$url = jUrl::​get('​hfnusearch~default:​queryajax'​);​ +
-         +
-$javascript = +
- "<​script type=\"​text/​javascript\">"​."​\n"​. +
- "//<​![CDATA["​."​\n"​. +
- "​$().ready(function() {"​."​\n"​. +
- "​\t"​."​$(\"#​hfnu_q\"​).autocomplete('"​.$url."',​ {"​."​\n"​. +
- "​\t\t"​."​width:​ 300,"​."​\n"​. +
- "​\t\t"​."​multiple:​ true,"​."​\n"​. +
- "​\t\t"​."​matchContains:​ true,"​."​\n"​. +
- "​\t"​."​});"​."​\n"​. +
- "​});"​."​\n"​. +
- "//​]]>"​."​\n"​. +
- "</​script>"​."​\n";​ +
-$tpl->​assign('​javascript',​$javascript);​ +
-</​code>​ +
-==== le template ==== +
- +
-<code php> +
-{$javascript} +
-... +
-</​code>​ +
-ce qui donnera dans la page html : +
-<​code>​ +
-<script type="​text/​javascript">​ +
-//<​![CDATA[ +
-$().ready(function() { +
-    $("#​hfnu_q"​).autocomplete('​http://​localhost/​index.php?​module=hfnusearch&​action=default:​queryajax',​ { +
-        width: 300, +
-        multiple: true, +
-        matchContains:​ true, +
-    }); +
-}); +
-//]]> +
-</​script>​ +
-</​code>​ +
- +
-===== 3 - Les moteurs d'URLs de Jelix ===== +
- +
- +
-A présent un autre aspect du moteur d'URLs de Jelix est son type. +
- +
-Le type de moteur __''​simple''​__ produit des URLS de la forme (pour reprendre l'​exemple précédant) +
- +
-http://​localhost/​index.php?​module=news&​action=default:​index&​parm1=value1  +
- +
-Le type de moteur __''​basic_significant''​ __produit des URLs à la ''​Cake''​ exemple :  +
- +
-http://​localhost/​index.php/​news/​default/​index?​parm1=value1  +
- +
-c'est à dire :  +
- +
-http://​localhost/​index.php/​module/​contrôleur/​methode?​parm1=value1  +
- +
-Le dernier type de moteur existant est le type __''​significant''​__ produisant l'url suivante : +
- +
-http://​localhost/​news/​value1 +
- +
-résultat beaucoup plus concis et clair pour trouver la news "​value1"​ ;) +
- +
-Le dernier (significant) utilise, de plus, un fichier ursl.xml permettant d'​indiquer à Jelix, la concordance  +
-entre une URLs et les modules. +
- +
-Ainsi pour l'url : http://​localhost/​news/​value1,​ le fichier urls.xml ressemblerait à : +
-<code xml> +
-<?xml version="​1.0"​ encoding="​UTF-8"?>​ +
-<urls xmlns="​http://​jelix.org/​ns/​urls/​1.0"> ​  +
-    <​classicentrypoint name="​index"​ default="​true"​ noentrypoint="​true">​ +
-        <url pathinfo="/​news/:​parm1"​ module="​news"​ action="​default:​index">​ +
-           <​param name="​parm1"​ type="​string"/>​ +
-        </​url>​ +
-    </​classicentrypoint>​ +
-</​urls>​ +
-</​code>​ +
- +
-===== 4 - Conclusion ===== +
- +
- +
-  * le générateur d'URLs permet justement de __ne jamais rien avoir en dur dans le code__ et de __ne rien figer__ concernant le choix et la gestion des URLs. +
-  * le moteur __''​basic_significant''​__ représente un très bon ratio temps passé / qualité des URLs générées  +
-  * le moteur __''​significant''​__ est un peu plus délicat à gérer car il faut écrire TOUTES les urls, au risque de voir certaines complétement inopérantes +
- +
- +
-jUrl est donc l'​outil indispensable pour la portabilité de ses applications dans des environnements hétérogènes +
-et d'une très grande souplesse de mis en oeuvre. +
- +
-[[http://​jelix.org/​articles/​fr/​manuel-1.1/​urls|en savoir plus sur jURL]]+
fr/tutoriels/jurl.txt · Dernière modification: 2009/09/22 14:42 par foxmask
Fils rss des changements récents dans le wiki Creative Commons License