Section: Appeler une action
« Les objets jResponse | ^ Principes de fonctionnement |
− Table des matières
URL : identification d'une action ¶
Une fois que l'on a fait un contrôleur on veut bien sûr pouvoir appeler l'une de ces méthodes, donc indiquer les informations nécessaires dans les URLs.
À chaque URL correspond une action (module/contrôleur/méthode). Si cette
correspondance n'est pas explicitement faite dans la configuration (fichier app/system/urls.xml
),
l'URL est composée des élements suivants :
index.php/<monmodule>/<moncontroleur>/<mamethode>
Chacun des élements sont faculatifs. Les URLs suivantes sont valides :
index.php/<monmodule>/<moncontroleur>
index.php/<monmodule>
index.php
- Si le nom de la méthode n'est pas présente, par défaut il s'agira de la méthode
index()
du contrôleur. - Si le nom du contrôleur est absent, il s'agira du contrôleur
default
- Si le nom du module est absent, Jelix éxecutera le module et l'action correspondant à "/", indiqué dans le fichier de configuation des URLs, app/system/urls.xml.
Sélecteurs d'action ¶
Dans vos templates et dans votre code en général, vous n'indiquerez jamais d'URL
"en dur". Jelix comporte des mécanismes (la classe jUrl
notament) pour
générer les URLs correspondantes à des actions. Ceci permet de modifier
le "mapping" entre des URLs et des actions. Tout ceci sans toucher ni aux templates,
ni aux contrôleurs.
Aussi vous allez devoir la plupart du temps indiquer à divers objets ou méthodes de l'API de Jelix des sélecteurs d'action accompagnés d'éventuels paramètres. Voir la page sur les sélecteurs pour en savoir plus sur les sélecteurs en général.
Les sélecteurs d'action ont cette syntaxe :
module~controleur:methode
Vous pouvez omettre l'une de ces parties comme spécifié précédemment :
controleur:methode
methode
module~
controleur:
Vous pouvez aussi indiquer le caractère "#" pour spécifier le module courant ou l'action courante. Dans ces exemples, imaginons que c'est l'action "bar:man" du module "foo" qui a été appelée dans Jelix :
- "#~controleur:methode" représente l'action "controleur:methode" du module qui a été appelé. Équivaut donc à "foo~controleur:methode"
- "module~#" représente l'action qui a été appelée mais du module indiqué. Équivaut donc à "module~bar:man"
- "#~#" représente le module/l'action qui ont été appelés. Équivaut donc à "foo~bar:man".
Indiquer le point d'entrée ¶
Par défaut quand on indique un sélecteur d'action, il génère l'URL avec le point d'entrée courant : si on a appelé Jelix avec index.php, ce sera index.php, si c'est xmlrpc.php, ce sera xmlrpc.php.
Cependant on peut vouloir indiquer des URLs pour d'autres points d'entrées. Par exemple, on est dans une action qui affiche une page html et on veut indiquer dans la page l'URL du point d'entrée pour les services web jsonrpc.
Dans ce cas on ajoute à la fin du sélecteur d'action, un "@" suivi du nom du type du point d'entrée :
foo~bar:man@jsonrpc
Ici on demande l'URL de l'action "bar:man" du module "foo", pour les requêtes de type "jsonrpc".
Pour la plupart des URLs on indiquera certainement "@classic".
Si dans un sélecteur d'action on indique juste le type de requête, seront utilisés le module et l'action indiqués pour l'URL "/" dans la configuration de l'application. Ainsi par exemple le sélecteur "@classic" correspondra à l'URL "index.php".
Pour en savoir plus : configuration et la manipulation des URLs dans Jelix.