나뭇 가지 템플릿에서 원시 필드 값을 어떻게 얻습니까?


27

myfield 는 일반 텍스트 필드입니다. {{ content.field_myfield }}HTML 마크 업 및 필드 레이블을 사용하여 필드를 렌더링합니다.

필드의 원시 값을 어떻게 렌더링합니까? {{ content.field_myfield.value }}작동하지 않습니다.

답변:


45

{{ entity.field_name.value }} 진정한 원가를 얻으려면 태그와 인코딩이 포함됩니다.

  • 예: {{ node.body.value }}
  • 결과: <p>Batman &amp; Robin</p>

{{ content.field_name.0 }} 원시 값 빼기 태그 및 인코딩을 가져옵니다.

  • 예: {{ content.body.0 }}
  • 결과: Batman & Robin

노골적인

이 필터는 특히 사용자가 입력 할 수있는 데이터를 출력하는 경우 가능하면 피해야합니다. Drupal 8의 자동 이스케이프에 대한 자세한 내용 은 이 페이지 를 참조하십시오 .

출처 : 필터-나뭇 가지 템플릿에서 변수 수정

원시 필터는 값을 "안전한"것으로 표시합니다. 즉, 자동 이스케이프가 활성화 된 환경에서는이 변수가 마지막으로 적용된 필터 인 경우이 변수가 이스케이프되지 않습니다.

출처 : 나뭇 가지의 공식 문서


예를 들어 다음을 사용할 수 있습니다.

{{ node.body.value|striptags }}
{{ paragraph.field_text.value|striptags }}

twig의 striptags 를 사용하는 문제 는 마크 업이 아닌 html 엔티티의 이중 인코딩이므로 &는 &가되고 & amp; – 버디 르


6
내용 예가 올바르지 않습니다. drupal.stackexchange.com/questions/198694/…를 참조하십시오 . 사용할 수있는 것은 content.field_text.0이며 필드 템플릿없이 첫 번째 필드 항목의 내부 부분 만 가져옵니다. 이는 원시 값이 아닌 형식화 된 출력을 원하는 목록, 참조 등에 특히 유용합니다.
Berdir

2
더 좋지만 여전히 정확하지는 않습니다. content.field_myfield | striptags가 작동하지 않아 렌더 배열을 전달할 수 없습니다. 먼저 렌더링 한 다음 통과시켜야합니다. striptags 등은 두 번 인코딩 될 수있는 & 및 다른 문자에도 문제가 있으므로 실제로 | striptags | raw가 필요합니다.
Berdir

2
raw는 html 태그를 그대로두고 인쇄합니다. 그러면 striptags의 문제점은 마크 업이 아닌 html 엔티티의 이중 인코딩이므로 &는 & amp; 그런 다음 & amp;
Berdir

2
이 두 번 당신이 볼 수, 탈출되지 <>올바르게 표시됩니다. 앰퍼샌드는 아마도 출력하기 전에 이미 단일 이스케이프되었을 것입니다. 그러나 질문은 텍스트 필터로 처리되는 형식이 지정된 텍스트 필드가 아닌 일반 텍스트 필드 에 관한 것 입니다. (이 질문되지 않은 질문에 대답하기 위해 원시 값 (누군가 실제로 원한다면)은 여전히 ​​유효하며 보안상의 이유로 형식화 된 텍스트 필드를 필터링하지 않아야하기 때문에 Twig에 의해 올바르게 단일 이스케이프됩니다).value
4k4

2
예, 이것이 제가 의미 한 바입니다 (자동 이스케이프 = 단일 이스케이프). 따라서 엔티티 필드 값을 출력하는 예제는 스트립 태그 필터없이 만 완벽합니다.이 방법은 못생긴 이중 이스케이프 출력을 생성하기 때문입니다. ( &amp;이 예제 의 출력이 잘못되었으므로 필드 내용이 이미 한 번 이스케이프되지 않으면 자동 이스케이프 처리에서는 발생하지 않습니다).
4k4

5

이 경우 Twig Field Value 모듈을 사용할 수 있습니다 . 이 모듈을 설치하면 필드 렌더 배열에서 부분 데이터에 액세스 할 수 있습니다. 예를 들어.

{{ content.field_name|field_value }}
content.field_image|field_target_entity.uri.value

프로젝트 페이지에 대한 추가 정보


1
{{ content.body | raw }} 

나뭇 가지 템플릿에서 원시 필드 값을 얻습니다.

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