필드가 비어 있지 않은지 확인


15

노드 템플릿에서 필드가 비어 있는지 확인하는 가장 좋은 방법은 무엇입니까?

node--example.html.twig에서 "content"변수를 사용할 수 있습니다.

블록 확인과 같은 확인을 사용할 수 없습니다

{% if content.field_example  %}

나는 이런 식으로 사용할 수 있습니다 :

{% if content.field_example['#object'] is defined  %}

그러나 가장 좋은 방법은 무엇입니까?


1
hook_preprocess를 사용하고 프로그래밍 방식으로 확인하십시오. 표시 변수를 추가하십시오. 그렇지 않으면 4k4가 쓴 것.

답변:


21

나는 또한 썼다처럼 당신은 어떻게 노드 템플릿 엔티티 참조의 필드를 렌더링 할 수 있습니까? [Drupal 8]에서 , content는 디스플레이 준비된 데이터를 포함하는 렌더 어레이이다.

무언가를 확인하거나 비교하려면 노드 오브젝트에서 사용 가능한 값을 대신 사용하십시오.

{% if node.field_example.value %}.

이 속성은 필드 유형에 따라 다릅니다. 참조 필드 인 경우 대신 target_id를 사용해야합니다. 참조 된 질문은 공통 필드 유형 및 해당 특성을 나열하는 엔티티 필드 API 치트 시트에 링크됩니다.


이미지 필드에서 {% node.field_article_image.target_id %}
인 Yogesh Kushwaha

13

내용 내부의 렌더 배열 구조를 확신 할 수 없으므로 최상의 방법은 아닙니다.

이것은 더 나은 해결책 일 수 있습니다.

{% if content.field_example|render|striptags|trim %}
  <p>field is not empty</p>
{% endif %}

필드를 렌더링하면 출력이 생성되는지 확인합니다.

그러나 이것은 필드 형식을 구성한 방법과 수행하려는 작업에 따라 다릅니다. 예를 들어, 필드가 비어 있으면 레이블을 표시하도록 구성 할 수 있습니다. 그런 다음 이것을 조정해야합니다. 렌더링 된 출력에 의존하지 않고 확인하려는 경우 필드에 데이터베이스에 값이 있으면 노드 개체를 사용하십시오. Berdir의 답변을 참조하십시오.


Berdir이 더 유연하기 때문에 정답을 고려합니다.
sainf

@ 4k4 다음은 |render이 링크를 참조 인해 필드 템플릿에서 임의의 공백 문제에 충분하지 않다 나뭇 가지 템플릿 빈 필드에 확인하는 것은 복잡하다
Mojtaba Reyhani

@MojtabaReyhani : 감사합니다. drupal.org/node/2783633#comment-11510195 링크가 있습니다 . 이것을 코드에 추가했습니다.
4k4

4

Twig templating ( Field Collection )
템플릿 에서 필드가 비어 있지 않은지 확인하십시오 : field-collection-item--field-services.html.twig

" | field_value "를 사용하여 값을 얻으려면 Field Twig Value Module 을 설치 한 후 " is not empty "

{% if content.field_work|field_value is not empty %}

       ...

{% endif %} 

1
{% if not (node.field_whatever.isEmpty == true) and content.field_whatever is defined %}
  <div class="whatever_markup">
    {{ content.field_whatever }}
  </div>
{% endif %}

이 솔루션은 방 탄성이 뛰어나고 재사용 가능 및 / 또는 공유 템플릿 (예 : node--teaser.html.twig여러 개의 번들에 대한 공유 )에서 작동합니다.

  • 모든 필드 유형에 적용됩니다.
  • 필드가 존재하는지 확인
  • 필드가 비어 있지 않은지 확인합니다.
  • 필드가 디스플레이 모드에서 숨겨져 있지 않은지 확인합니다.

이중 음수 not ...isEmpty == true가 필요합니다. 그렇지 않으면 존재하지 않는 필드가 확인에 실패합니다. 또한 내 솔루션이 필드 렌더링과 관련된 모든 검사보다 오류에 훨씬 빠르고 탄력적이라고 ​​생각합니다.

이것은 당신이 간단하게 교체 할 수 있습니다 예, 실체 템플릿 작업을해야 node.field_xxxparagraph.field_xxxA의 paragraph.html.twig템플릿 파일

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.