web-dev-qa-db-fra.com

Comment vérifier une valeur booléenne dans les modèles twig?

Nous avons un champ_booléen (champ booléen) sur un ECK Bundle sur le type de contenu de l'article. En faisant des recherches, nous sommes tombés sur la question " Comment tester un champ booléen dans un modèle twig? " mais cela ne résout pas mon problème.

Quelle est la manière appropriée de vérifier la valeur booléenne?

Nous avons essayé mais ils ne fonctionnent pas:

{% if entity.field_boolean == True %}
{% if '1' in entity.field_boolean[0] %}

Ceux-ci semblent fonctionner, mais pas sûr que ce soit la bonne approche.

{% if entity.field_boolean[#items].value == '1' %}
{% if entity.field_boolean[#items].value %}
7
usernameabc

Il est temps pour une autre promotion de mon blog depuis un certain temps :)

https://www.md-systems.ch/en/blog/techblog/2017/02/20/twig-and-entity-field-api-or-how-to-take-control-of- nodehtmltwig

La partie pertinente:

Afficher un champ uniquement si une case est cochée, éventuellement avec un habillage HTML personnalisé.

{% if node.field_checkbox.value %}
   <div class="only added when there are values">
  {{ content.field_name }}
  </div>
{% endif %}

Vous n'avez pas besoin de == '1' ou identique ou similaire, car il évalue directement une valeur booléenne. Je ne recommanderais pas non plus d'utiliser des vérifications de sécurité de type avec des entités de contenu car elles ne sont pas sécurisées de type. Les valeurs sont stockées dans la base de données et tout ce qui en sort est une chaîne, mais parfois les valeurs peuvent ne pas l'être. Le champ booléen est en fait l'exemple parfait pour cela, c'est une chaîne, alias un joli mélange de 3 types de données différents.

15
Berdir

Les champs des cases à cocher valident l'archivage Twig modèles pour drupal 8:

{% if node.field_checkbox['#items'].value == '1' %}
  <div class="only added when there are values">
    {{ content.field_name }}
  </div>
{% endif %}

Cela fonctionne très bien pour moi.

4
Maxim Kashuba

Pour moi, un test n'a pas fonctionné de manière cohérente. Cependant, la condition suivante semble avoir couvert tous les cas d'utilisation.

{% if content.field_boolean is not empty and node.field_boolean.value == '1' %}
1
makbeta

Si vous créez le champ booléen dans le type de contenu, cela a fonctionné pour moi

{% if node.field_boolean.value == 1%} {{page.contact_form}} {% endif%}

et aussi si vous avez un champ booléen dans un paragraphe, cela a fonctionné pour moi

{% if content.field_boolean ['# items']. value == 1%} {{content.field_description}} {% endif%}

0
santhosh