Come posso ottenere il valore del campo grezzo in un modello di ramoscello?


27

myfield è un campo di testo semplice. {{ content.field_myfield }}esegue il rendering del campo con markup HTML e l'etichetta del campo.

Come si visualizza il valore grezzo del campo? {{ content.field_myfield.value }}non funziona

Risposte:


45

{{ entity.field_name.value }} per ottenere il vero valore grezzo, include tag e codifica.

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

{{ content.field_name.0 }} per ottenere il valore grezzo meno tag e codifica.

  • Esempio: {{ content.body.0 }}
  • risultato: Batman & Robin

crudo

Questo filtro dovrebbe essere evitato quando possibile, in particolare se si stanno trasmettendo dati che potrebbero essere inseriti dall'utente. Vedi questa pagina per maggiori informazioni sulla fuga automatica in Drupal 8.

fonte: Filtri - Modifica delle variabili nei modelli di ramoscelli

Il filtro raw contrassegna il valore come "sicuro", il che significa che in un ambiente con escape automatico abilitato questa variabile non verrà ignorata se raw è l'ultimo filtro applicato ad esso

fonte: documenti ufficiali di Twig


Ad esempio, puoi usare:

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

Il problema con l'uso di | striptags di twig è la doppia codifica di entità html, non di markup, quindi & diventa & e quindi & amp; - Berdir


6
gli esempi di contenuto non sono corretti. Vedi drupal.stackexchange.com/questions/198694/… . Quello che puoi usare è content.field_text.0, quindi otterrai solo la parte interna del primo elemento del campo, senza i modelli di campo. Ciò è particolarmente utile per elenchi, riferimenti e così via, in cui si desidera l'output formattato, non il valore non
elaborato

2
Meglio, ma ancora non del tutto corretto. content.field_myfield | striptags non funziona, non puoi passare un array di rendering a quello. Dovresti prima renderlo e poi passarlo. gli striptag e così via hanno anche problemi con & e altri caratteri che possono essere codificati due volte, quindi spesso è necessario uno | striptags | raw.
Berdir,

2
Just | raw lascia i tag html e li stampa. Il problema con | striptags è quindi la doppia codifica di entità html, non di markup, quindi & diventa & amp; e poi & amp; amp;
Berdir,

2
Non si tratta di una doppia evasione, puoi vederlo <e >sono visualizzati correttamente. La e commerciale probabilmente è già a escape singolo prima di essere emesso. Ma la domanda riguarda un campo di testo semplice , non un campo di testo formattato elaborato dai filtri di testo. (Per rispondere a questa domanda non posta, il valore .valuenon elaborato (se qualcuno lo desidera davvero) rimarrebbe comunque
inserito

2
Sì, questo è ciò che intendevo (auto-escape = single escape). Quindi i tuoi esempi per l'output dei valori dei campi di entità sono perfetti, solo senza il filtro striptag, perché ciò produrrebbe un brutto output con doppio escape. (A proposito l' &amp;output nel tuo esempio è sbagliato, questo non accade nell'autoescaping a meno che il contenuto del campo non sia già sfuggito una volta).
4k4,

5

In questo caso è possibile utilizzare il modulo Valore campo Twig . Dopo aver installato questo modulo, avrai accesso ai dati parziali dagli array di rendering sul campo. Per es.

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

ecc. Ulteriori informazioni sulla pagina dei progetti


1
{{ content.body | raw }} 

ottenere il valore del campo grezzo in un modello di ramoscello

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.