Table des matières
On a parfois besoin sauvegarder le parcours de l’utilisateur pour ensuite réaliser des actions quelconques en conséquence. Pour cela, Axelor possède un concept très utile : la variable de contexte.
Explication à l’aide d’un exemple
<!-- Maillots enfant -->
<menuitem name="maillots-foot-enfant" title="Enfant" parent="maillots-foot" action="action-maillots-foot-enfant"/>
<action-view title="Maillots de foot pour enfant" name="action-maillots-foot-enfant" model="com.axelor.decath.db.MaillotsFoot">
<view type="grid" name="maillots-foot-grid"/>
<view type="form" name="maillots-foot-form"/>
<domain>self.isEnfant = true</domain>
<context name="_isEnfant" expr="true" />
</action-view>
<!-- Maillots adulte -->
<menuitem name="maillots-foot-adulte" title="Adulte" parent="maillots-foot" action="action-maillots-foot-adulte"/>
<action-view title="Maillots de foot pour adulte" name="action-maillots-foot-adulte" model="com.axelor.decath.db.MaillotsFoot">
<view type="grid" name="maillots-foot-grid"/>
<view type="form" name="maillots-foot-form"/>
<domain>self.isEnfant = false</domain>
<context name="_isEnfant" expr="false" />
</action-view>
Ici, lorsque l’utilisateur clique sur le menu “Adulte”, une variable de contexte, nommée _isEnfant
est créée. On lui assigne la valeur false (expr="false"
) si l’utilisateur a cliqué sur le menu Adulte ou true s’il a cliqué sur le menu Enfant.
Appel d’une action lorsque l’utilisateur clique sur le bouton enregistrer :
<grid model="com.axelor.decath.db.MaillotsFoot" title="Maillots de foot" name="maillots-foot-grid" orderBy="taille" onNew="action-record-set-maillot-foot">
Définition de cette action :
<action-record model="com.axelor.decath.db.MaillotsFoot" name="action-record-set-maillot-foot">
<field name="isEnfant" expr="eval: _isEnfant" />
<field name="categorie" expr="Enfant" if="eval: _isEnfant"/>
<field name="categorie" expr="Adulte" if="eval: !_isEnfant" />
</action-record>
Ci-dessus, on met dans le champ isEnfant de la table MaillotsFoot la valeur de la variable de contexte qui est un booléen, puis on remplit le champ categorie avec la chaine de caractères “Enfant” si _isEnfant
vaut true (si l’utilisteur a cliqué sur le menu enfant) ou par “Adulte” si _isEnfant
vaut false (si l’utilisateur a cliqué sur le menu Adulte).