Какой лучший способ проверить, является ли поле пустым в шаблоне узла.
В узле - example.html.twig мы можем использовать переменную «content».
Я не могу использовать проверку как проверку блока
{% if content.field_example %}
Я могу использовать что-то вроде этого:
{% if content.field_example['#object'] is defined %}
Но какой метод самый лучший?
Ответы:
Как я уже писал в Как вы можете визуализировать поля из ссылки на сущность в шаблонах узлов? [Drupal 8] , content - это массив визуализации, который содержит данные, подготовленные для отображения.
Если вы хотите что-то проверить или сравнить, используйте вместо этого значения, которые доступны для объекта узла.
{% if node.field_example.value %}
,Обратите внимание, что свойство зависит от типа поля. Если это поле ссылки, вам нужно использовать target_id. Упомянутый вопрос ссылается на шпаргалку API полей сущностей, в которой перечислены общие типы полей и их свойства.
источник
Вы не можете быть уверены в структуре массива рендеринга внутри контента, так что это возможно не лучший метод.
Это может быть лучшим решением:
Это проверяет, генерирует ли рендеринг поля какие-либо выходные данные.
Но это зависит от того, как вы настроили формат поля и что вы пытаетесь сделать. Например, вы могли бы настроить отображение метки, если поле пустое. Тогда вы должны настроить это. Если вы не зависите от визуализированного вывода и хотите только проверить, имеет ли поле значение в базе данных, используйте объект узла. Смотри ответ Бердира.
источник
|render
этого недостаточно из-за случайных проблем с пробелами в шаблонах полей. См. Эту ссылку: Проверка пустых полей в шаблонах Twig сложнаПроверьте, не является ли поле пустым в шаблоне Twig ( Field Collection )
Шаблон : field-collection-item - field-services.html.twig
Установите модуль значения Field Twig, чтобы получить значение, используя « | field_value », а затем « не пусто »
источник
Это решение является пуленепробиваемым и даже работает в повторно используемых и / или общих шаблонах (например, совместно используемых в
node--teaser.html.twig
нескольких пакетах), потому чтоДвойной отрицательный
not ...isEmpty == true
знак необходим, иначе несуществующее поле не пройдет проверку. Я также считаю, что мое решение намного быстрее и устойчивее к ошибкам, чем любая проверка, включающая рендеринг поля.Это должно работать для любого шаблона объекта, например , вы можете просто заменить
node.field_xxx
сparagraph.field_xxx
вparagraph.html.twig
файле шаблонаисточник