# Les conditions ## Un condition Les conditions permettent d'ajouter ou de supprimer des propriétés à une [variable](../variable/README.md), une [famille](../family/README.md), un [service](../service/README.md), un [fichier](../service/file.md) ou une [ip](../service/ip.md) suivant le contexte. Nous allons nous concentrer ici sur la condition hidden_if_in, mais [il existe d'autre conditions](conditions.md). 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. ```xml True my_variable ``` En YAML : ```yml 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](../param/README.md) de la condition permet de définir les valeurs que doit avoir la source pour appliquer l'action. La [cible](../target/README.md) 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 : ```xml yes maybe my_variable ``` En YAML : ```yml 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 : ```xml yes maybe my_variable ``` En YAML : ```yml - condition: - name: hidden_if_in source: condition optional: true apply_on_fallback: false param: - text: 'yes' - text: 'maybe' target: - text: my_variable ```