Bir alanın boş olmadığını doğrulayın


15

Bir düğüm şablonunda bir alanın boş olup olmadığını kontrol etmenin en iyi yöntemi nedir?

Node - example.html.twig içinde "content" değişkenini kullanabiliriz.

Çeki bir blok kontrol etmek gibi kullanamıyorum

{% if content.field_example  %}

Ben böyle bir şey kullanabilirsiniz:

{% if content.field_example['#object'] is defined  %}

Peki en iyi yöntem nedir?


1
Hook_preprocess kullanın ve programlı olarak kontrol edin, belki gösterge değişkeni ekleyin. Aksi takdirde 4k4 yazdı.

Yanıtlar:


21

Ben de yazdı gibi nasıl düğüm şablonlarında bir varlık referansından alanları işleyebilen? [Drupal 8] , içerik görüntüleme için hazırlanan verileri içeren bir oluşturma dizisidir.

Bir şeyi kontrol etmek veya karşılaştırmak istiyorsanız, bunun yerine düğüm nesnesinde bulunan değerleri kullanın.

{% if node.field_example.value %}.

Özelliğin alan türüne bağlı olduğunu unutmayın. Bir referans alanı ise, bunun yerine target_id kullanmanız gerekir. Başvurulan soru, ortak alan türlerini ve özelliklerini listeleyen bir varlık alanı API hile sayfasına bağlanır.


{% Node.field_article_image.target_id%} resim alanı için
Yogesh Kushwaha

13

İçeriğin içindeki oluşturma dizisinin yapısından emin olamazsınız, bu yüzden bu en iyi yöntem değildir.

Bu daha iyi bir çözüm olabilir:

{% if content.field_example|render|striptags|trim %}
  <p>field is not empty</p>
{% endif %}

Bu, alanın oluşturulmasının herhangi bir çıktı üretip üretmediğini kontrol eder.

Ancak bu, alan biçimini nasıl yapılandırdığınıza ve ne yapmaya çalıştığınıza bağlıdır. Örneğin, alan boşsa bir etiket görüntülemek üzere yapılandırılmış olabilirsiniz. O zaman bunu ayarlamanız gerekir. Oluşturulan çıktıya bağımlı değilseniz ve yalnızca alanın veritabanında bir değeri olup olmadığını kontrol etmek istiyorsanız, düğüm nesnesini kullanın. Berdir'in cevabına bakınız.


Berdir'in cevabını doğru düşünüyorum çünkü daha esnek.
sainf

@ 4k4: |renderAlan şablonlarından rastgele boşluk sorunları nedeniyle yeterli değil, Bu bağlantıya bakın : Dal şablonlarındaki boş alanları kontrol etmek karmaşık
Mojtaba Reyhani

@MojtabaReyhani: Teşekkür ederim, harika bul. Orada bu bağlantı drupal.org/node/2783633#comment-11510195 bulundu . Bunu koda ekledi.
4k4

4

Dal şablonlama ( Alan Koleksiyonu )
Şablonunda alanın boş olup olmadığını kontrol edin : alan toplama öğesi - field-services.html.twig

Yükleme Saha Twig Değeri Modülü kullanılarak değerini elde etmek için " | FIELD_VALUE ardından" " boş değilse "

{% if content.field_work|field_value is not empty %}

       ...

{% endif %} 

1
{% if not (node.field_whatever.isEmpty == true) and content.field_whatever is defined %}
  <div class="whatever_markup">
    {{ content.field_whatever }}
  </div>
{% endif %}

Bu çözüm oldukça kurşun geçirmezdir ve hatta reusealbe ve / veya paylaşılan şablonlarda (örneğin, node--teaser.html.twigçoklu paketler arasında paylaşılan ) çalışıyor

  • tüm alan tipleri için çalışır
  • alanın var olup olmadığını kontrol eder
  • alanın boş olup olmadığını kontrol eder
  • alanın görüntüleme modunda gizlenip gizlenmediğini kontrol eder

Çifte negatif not ...isEmpty == truegereklidir, aksi takdirde var olmayan bir alan kontrolde başarısız olur. Ayrıca, çözümümün, alanı oluşturmayı içeren herhangi bir kontrolden çok daha hızlı ve hatalara dayanıklı olduğuna inanıyorum.

Bu basitçe yerine örneğin, herhangi bir varlık şablonu için çalışması gerektiğini node.field_xxxile paragraph.field_xxxbir de paragraph.html.twigşablon dosyası

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.