Apa metode terbaik untuk memeriksa apakah bidang kosong di templat simpul.
Dalam node - example.html.twig kita dapat menggunakan variabel "content".
Saya tidak bisa menggunakan cek seperti memeriksa blok
{% if content.field_example %}
Saya dapat menggunakan sesuatu seperti ini:
{% if content.field_example['#object'] is defined %}
Tetapi apa metode terbaik?
Jawaban:
Seperti saya juga menulis di Bagaimana Anda bisa membuat bidang dari referensi entitas di templat node? [Drupal 8] , konten adalah array render yang berisi data yang disiapkan untuk ditampilkan.
Jika Anda ingin memeriksa atau membandingkan sesuatu, gunakan nilainya, yang tersedia pada objek simpul.
{% if node.field_example.value %}
.Perhatikan bahwa properti tergantung pada jenis bidang. Jika ini adalah bidang referensi, Anda harus menggunakan target_id sebagai gantinya. Tautan pertanyaan yang direferensikan ke lembar contekan API bidang entitas yang mencantumkan jenis bidang umum dan propertinya.
sumber
Anda tidak dapat yakin tentang struktur array render di dalam konten, jadi ini mungkin bukan metode terbaik.
Ini mungkin solusi yang lebih baik:
Ini memeriksa apakah rendering bidang menghasilkan output apa pun.
Tapi ini tergantung, bagaimana Anda mengonfigurasi format bidang dan apa yang Anda coba lakukan. Misalnya, Anda bisa mengonfigurasi untuk menampilkan label jika bidang kosong. Maka Anda harus menyesuaikan ini. Jika Anda tidak bergantung pada output yang diberikan dan hanya ingin memeriksa, jika bidang memiliki nilai dalam database, gunakan objek node. Lihat jawaban Berdir.
sumber
|render
cukup karena masalah spasi putih acak dari templat bidang, Lihat tautan ini: Memeriksa bidang kosong di templat Twig itu rumitPeriksa apakah bidang tidak kosong di Templat ranting templat ( Koleksi Bidang ) : bidang-koleksi-item - bidang-layanan.html.twig
Instal Modul Nilai Ranting Bidang untuk mendapatkan nilai menggunakan " | field_value ", diikuti oleh " tidak kosong "
sumber
Solusi ini cukup anti peluru dan bahkan bekerja di reusealbe dan / atau templat yang dibagikan (mis. Shared
node--teaser.html.twig
di berbagai bundel) karenanot ...isEmpty == true
Diperlukan double double , jika tidak, bidang yang tidak ada akan gagal dalam pemeriksaan. Saya juga percaya bahwa solusi saya jauh lebih cepat dan tahan terhadap kesalahan daripada pemeriksaan apa pun yang melibatkan rendering bidang.Ini harus berfungsi untuk semua templat entitas, mis. Anda cukup mengganti
node.field_xxx
denganparagraph.field_xxx
dalamparagraph.html.twig
file templatsumber