rougail/doc/condition/condition.md

3.2 KiB

Les conditions

Un condition

Les conditions permettent d'ajouter ou de supprimer des propriétés à une variable, une famille, un service, un fichier ou une ip suivant le contexte.

Nous allons nous concentrer ici sur la condition hidden_if_in, mais il existe d'autre conditions.

La condition hidden_if_in permet de cacher une variable où une famille à l'utilisateur, mais cette variable est toujours accessible dans un calcul, un vérification ou dans un template.

<variables>
  <variable name="condition" type="boolean"/>
  <variable name="my_variable"/>
</variables>

<constraints>
  <condition name="hidden_if_in" source="condition">
    <param>True</param>
    <target>my_variable</target>
  </condition>
</constraints>

En YAML :

variables:
- variable:
    name: condition
    type: boolean
- variable:
    name: my_variable
constraints:
- condition:
  - name: hidden_if_in
    source: condition
    param:
    - text: true
    target:
    - text: my_variable

Le paramètres de la condition permet de définir les valeurs que doit avoir la source pour appliquer l'action.

La cible de la condition est ici "my_variable".

Donc ici la variable est caché à l'utilisateur si la variable "condition" est à True (le paramètre).

Un condition avec plusieurs paramètres

Il est également possible de mettre plusieurs paramètre :

<variables>
  <variable name="condition"/>
  <variable name="my_variable"/>
</variables>

<constraints>
  <condition name="hidden_if_in" source="condition">
    <param>yes</param>
    <param>maybe</param>
    <target>my_variable</target>
  </condition>
</constraints>

En YAML :

variables:
- variable:
    name: condition
- variable:
    name: my_variable
constraints:
- condition:
  - name: hidden_if_in
    source: condition
    param:
    - text: 'yes'
    - text: 'maybe'
    target:
    - text: my_variable

Une condition optionnelle

Il est possible de définir une condition avec une variable source qui n'existe pas dans toutes les contextes.

Dans ce cas, on met la condition en "optionnelle".

Si la variable source existe, la condition s'applique.

Si la variable source n'existe pas :

  • si le nom fini en _if_in (par exemple hidden_if_in), l'action est forcée sans condition (les cibles sont hidden)
  • si le nom fini en _if_not_in (par exemple hidden_if_not_in), la condition est totalement ignorée

Ces deux comportements peuvent être changé à tout moment avec l'attribut "apply_on_fallback". Dans ce cas :

  • si la valeur de "apply_on_fallback" est "True", l'action est forcée sans condition
  • si la valeur de "apply_on_fallback" est "False", la condition est totalement ignorée

Exemple :

<condition name="hidden_if_in" source="condition" optional="True", apply_on_fallback="False">
  <param>yes</param>
  <param>maybe</param>
  <target>my_variable</target>
</condition>

En YAML :

- condition:
  - name: hidden_if_in
    source: condition
    optional: true
    apply_on_fallback: false
    param:
    - text: 'yes'
    - text: 'maybe'
    target:
    - text: my_variable