/
appel-action.gtw
113 lines (81 loc) · 4.11 KB
/
appel-action.gtw
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
~~LANG:EN@enman:core/call-action~~
===== URL : identification d'une action =====
Une fois que l'on a fait [[/controleurs|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.
Avec la configuration par défaut de Jelix (donc avec le moteur d'URL
//basic_significant//), il faut indiquer dans l'URL :
* le nom du module
* le nom du contrôleur
* le nom de la méthode
<code>
index.php/monmodule/moncontroleur/mamethode
</code>
Avec le moteur d'url "simple", on aurait une url comme :
<code>
index.php?module=monmodule&action=moncontroleur:mamethode
</code>
Notez que le nom du contrôleur et celui de la méthode doivent être séparés par
le caractère ":".
* Si le nom d'action n'est pas présent, Jelix essaiera d'exécuter la méthode
@@M@index()@@ du contrôleur //default// dans le module indiqué.
* Si le nom du module est absent, Jelix essaiera d'exécuter l'action indiquée
du module indiqué dans le paramètre @@V@startModule@@ dans la configuration
de l'application.
* Si les deux noms sont absents, Jelix exécutera l'action indiquée dans le
paramètre @@V@startAction@@, à partir du module indiqué dans le paramètre
@@V@startModule@@ dans la configuration de l'application.
* Avec le moteur d'url "simple", pour l'action, si on indique juste le nom de
la méthode, Jelix exécutera la méthode indiquée dans le contrôleur
//default//.
===== 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 @@C@jUrl@@ notament) pour
générer les URLs correspondantes à des actions. Ceci permet de choisir son
moteur d'URL préféré (simple ou significant) et de modifier le "mapping" entre
des URLs significatives 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 [[/concepts/selecteurs|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 :
<code>
module~controleur:methode
</code>
Vous pouvez omettre l'une de ces parties comme spécifié précédemment :
<code>
controleur:methode
methode
module~
controleur:
</code>
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 :
<code>
foo~bar:man@css
</code>
Ici on demande l'URL de l'action "bar:man" du module "foo", pour les requêtes de
type "css".
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 respectivement dans startModule et
startAction de la configuration de l'application. Ainsi par exemple le sélecteur
"@classic" correspondra à l'URL "index.php".
Pour en savoir plus : [[/urls|configuration et la manipulation des URLs dans Jelix]].