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 12:33] – créée foxmaskfr:tutoriels:jurl [2009/09/22 12:42] (Version actuelle) 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 12:42 de foxmask
Fils rss des changements récents dans le wiki Creative Commons License