Bagaimana cara mendapatkan nilai bidang mentah dalam templat ranting?


27

myfield adalah bidang teks biasa. {{ content.field_myfield }}merender bidang dengan markup HTML dan label bidang.

Bagaimana cara membuat nilai mentah bidang tersebut? {{ content.field_myfield.value }}tidak bekerja

Jawaban:


45

{{ entity.field_name.value }} untuk mendapatkan nilai mentah yang sebenarnya, sertakan tag dan enkode.

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

{{ content.field_name.0 }} untuk mendapatkan nilai mentah dikurangi tag dan encoding.

  • Contoh: {{ content.body.0 }}
  • hasil: Batman & Robin

mentah

Filter ini harus dihindari sedapat mungkin, terutama jika Anda mengeluarkan data yang bisa dimasukkan pengguna. Lihat halaman ini untuk informasi lebih lanjut tentang pelarian-otomatis di Drupal 8.

sumber: Filter - Memodifikasi Variabel Dalam Kerangka Templat

Filter mentah menandai nilai sebagai "aman", yang berarti bahwa dalam lingkungan dengan pelolosan otomatis yang diaktifkan, variabel ini tidak akan lolos jika mentah adalah filter terakhir yang diterapkan padanya.

sumber: dokumen resmi Twig


Misalnya, Anda dapat menggunakan:

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

Masalah dengan menggunakan ranting | striptags adalah pengkodean ganda entitas html, bukan markup, jadi & menjadi & dan kemudian & amp; - Berdir


6
contoh konten tidak benar. Lihat drupal.stackexchange.com/questions/198694/… . Apa yang dapat Anda gunakan adalah content.field_text.0, maka Anda hanya mendapatkan bagian dalam dari item bidang pertama, tanpa templat bidang. Itu terutama berguna untuk daftar, referensi, dan sebagainya, di mana Anda menginginkan output yang diformat, bukan nilai mentah
Berdir

2
Lebih baik, tetapi masih belum sepenuhnya benar. content.field_myfield | striptags tidak berfungsi, Anda tidak bisa meneruskan array render ke sana. Anda harus membuatnya terlebih dahulu dan kemudian melewatinya. striptag dan sebagainya juga memiliki masalah dengan & dan karakter lain yang dapat dikodekan dua kali, sehingga Anda seringkali memerlukan | striptag | raw sebenarnya.
Berdir

2
Hanya | mentah meninggalkan tag html dan mencetaknya. Masalah dengan | striptags kemudian pengkodean ganda entitas html, bukan markup, jadi & menjadi & amp; lalu & amp; amp;
Berdir

2
Ini bukan pelarian ganda, Anda bisa melihatnya <dan >ditampilkan dengan benar. Ampersand mungkin sudah tunggal lolos sebelum Anda output. Tetapi pertanyaannya adalah tentang bidang teks biasa , bukan bidang teks yang diformat yang diproses oleh filter teks. (Untuk menjawab pertanyaan yang tidak diajukan ini, nilai mentah (jika seseorang benar-benar menginginkannya) akan tetap ada .valuedan akan dengan benar tunggal diloloskan oleh Twig, karena alasan keamanan, karena Anda tidak pernah harus menampilkan bidang teks yang diformat tanpa filter)
4k4

2
Ya, inilah yang saya maksud (pelolosan otomatis = pelarian tunggal). Jadi contoh Anda untuk menghasilkan nilai bidang entitas sempurna, hanya tanpa filter striptag, karena ini akan menghasilkan output lolos ganda yang jelek. (BTW &amp;output dalam contoh Anda salah, ini tidak terjadi dalam autoescaping kecuali konten bidang sudah lolos satu kali).
4k4

5

Anda dapat menggunakan modul Nilai Bidang Ranting dalam kasus ini. Setelah menginstal modul ini, Anda akan mendapatkan akses ke sebagian data dari array render bidang. Misalnya

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

dll. Info lebih lanjut di halaman proyek


1
{{ content.body | raw }} 

dapatkan nilai bidang mentah dalam templat ranting

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.