Como obtenho o valor do campo bruto em um modelo de galho?

27

myfield é um campo de texto sem formatação. {{ content.field_myfield }}renderiza o campo com marcação HTML e o rótulo do campo.

Como renderizo o valor bruto do campo? {{ content.field_myfield.value }}não funciona

Pim
fonte

Respostas:

45

{{ entity.field_name.value }} para obter o verdadeiro valor bruto, inclui tags e codificação.

  • Exemplo: {{ node.body.value }}
  • resultado: <p>Batman &amp; Robin</p>

{{ content.field_name.0 }} para obter o valor bruto menos tags e codificação.

  • Exemplo: {{ content.body.0 }}
  • resultado: Batman & Robin

cru

Esse filtro deve ser evitado sempre que possível, principalmente se você estiver produzindo dados que podem ser inseridos pelo usuário. Consulte esta página para obter mais informações sobre escape automático no Drupal 8.

fonte: Filtros - Modificando variáveis ​​em modelos Twig

O filtro bruto marca o valor como "seguro", o que significa que em um ambiente com escape automático ativado, essa variável não será escapada se o bruto for o último filtro aplicado a ela

fonte: Documentos oficiais do Twig


Por exemplo, você pode usar:

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

O problema com o uso das striptags do twig é a codificação dupla de entidades html, não a marcação, portanto o & torna-se & e então & & amp; - Berdir

Sem suor
fonte
6
os exemplos de conteúdo não estão corretos. Consulte drupal.stackexchange.com/questions/198694/… . O que você pode usar é content.field_text.0, então você obtém apenas a parte interna do primeiro item do campo, sem os modelos de campo. Isso é especialmente útil para as listas, referências e assim por diante, onde deseja que a saída formatada, não o valor bruto
Berdir
2
Melhor, mas ainda não totalmente correto. content.field_myfield | striptags não funciona, você não pode passar uma matriz de renderização para isso. Você precisaria renderizá-lo primeiro e depois passar por isso. striptags e assim por diante também têm problemas com & e outros caracteres que podem ser codificados duas vezes; portanto, muitas vezes você precisa de um | striptags | raw.
Berdir
2
Apenas | raw sai das tags html e as imprime. O problema com as | striptags é então a codificação dupla das entidades html, não a marcação, portanto o & se torna & amp; e então & amp; amp;
22417 Berdir
2
Isso não é duplo, você pode ver isso <e >é exibido corretamente. O e comercial provavelmente já está com escape único antes da saída. Mas a pergunta é sobre um campo de texto simples , não um campo de texto formatado processado por filtros de texto. (Para responder a essa pergunta não feita, o valor bruto (se alguém realmente quiser isso) ainda estaria dentro .valuee seria corretamente escapado por Twig, por razões de segurança, porque você nunca deve exibir um campo de texto formatado sem
filtragem
2
Sim, foi isso que eu quis dizer (escape automático = escape único). Portanto, seus exemplos para a saída de valores de campo de entidade são perfeitos, apenas sem o filtro de etiquetas de faixa, porque isso produziria a saída de escape dupla feia. (BTW, a &amp;saída no seu exemplo está incorreta, isso não ocorre no escape automático, a menos que o conteúdo do campo já tenha escapado uma vez).
4k4
5

Você pode usar o módulo Twig Field Value neste caso. Após instalar este módulo, você terá acesso a dados parciais das matrizes de renderização de campo. Por ex.

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

etc. Mais informações na página de projetos

Andrew Kozoriz
fonte
1
{{ content.body | raw }} 

obter o valor do campo bruto em um modelo de galho

Wasim Khan
fonte