web-gelistirme-sc.com

Bir alanın boş olup olmadığını kontrol edin

$ Node nesnesine sahip olduğunuzda bir alanın boş olup olmadığını nasıl kontrol edersiniz ?.

Bunu olası bir çözüm olarak buldum:

$field = field_get_items('node', $node, 'field_post_image');

Şimdi kontrol edebilirim:

GÜNCELLEME . Ups! Bu güvenilir değil, dün benim için çalışacağına söz veriyorum.

isset($field);

ama daha iyi bir yol olup olmadığını merak ediyorum.

Beni aydınlat

17
corbacho

belgeler üzerine okursanız, veri yoksa FALSE işlevini döndürür. isset(), değişkene FALSE atadığınız için aslında başarısız olur, böylece aslında bir şeye ayarlanır. Doğru sözdizimi şöyle olur:

$field = field_get_items('node', $node, 'field_post_image');
if ($field) {
   //Do something with the field
}
else{
   //There are no results
}
30
Sam152

Bir alanın boş olup olmadığını doğrulamak için aşağıdaki snippet'i kullanabilirsiniz.

$info = field_info_field($field_name);
$function = $info['module'] . '_field_is_empty';

if (function_exists($function)) {
  $value = field_get_items('node', $node, $field_name);
  $is_empty = $function($value[0], $info);
}

Farklı koşullar altında farklı alanlar boş kabul edildiğinden bu kod daha güvenlidir. Örneğin, bkz. file_field_is_empty () , number_field_is_empty () ve taxonomy_field_is_empty () : taxonomy_field_is_empty() kontroller $item parametresinin tid özelliği, number_field_is_empty() ise Aynı parametrenin value özelliği. Özel alanlar, alanı boş olarak değerlendirmek için daha karmaşık bir durumun doğrulanmasını gerektirebilir.

Belgelerde verilen hook_field_is_empty () açıklaması aşağıdaki gibidir:

Bir alan türü için neyin boş bir öğe oluşturduğunu tanımlayın.

8
kiamlaluno

Ham değeri ($content['field_name']['#items'][0][value]), böylece alanın ifadeyle boş olup olmadığını belirleyebilirsiniz

(! Empty ($ içerik [ 'alan_adı'] [ '# öğe'] [0] [değer]))

nerede field_name istenen alanın adıyla eşleşir.

2
eduardocs

Drupal 8

Birisi D8'de aynı cevaba ihtiyaç duyarsa, alanımı test etmek için yaptığım şey budur:

if ($entity->hasField('field_event_date_start')
  && !$entity->get('field_event_date_start')->isEmpty()) {
  // Do something ...
}
1
Pauleau