it-swarm.asia

تحقق مما إذا كان الحقل فارغًا

كيف يمكنك التحقق من أن الحقل فارغ ، عندما يكون لديك كائن عقدة $ ؟.

لقد وجدت هذا كحل ممكن:

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

يمكنني التحقق الآن:

تحديث . هذا غير موثوق به ، على الرغم من أنني أعدت أنه نجح لي أمس.

isset($field);

لكنني أتساءل عما إذا كانت هناك طريقة أفضل.

تنورني

17
corbacho

إذا قرأت في الوثائق ترجع الدالة FALSE إذا لم تكن هناك بيانات. isset() ستفشل في الواقع لأنك تقوم بتعيين FALSE للمتغير لذا تم تعيينه بالفعل على شيء ما. سيكون بناء الجملة الصحيح:

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

يمكنك استخدام المقتطف التالي للتحقق مما إذا كان الحقل فارغًا.

$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);
}

هذا الرمز أكثر أمانًا ، حيث تعتبر الحقول المختلفة فارغة تحت ظروف مختلفة. انظر ، على سبيل المثال ، الفرق بين file_field_is_empty () و number_field_is_empty () و taxonomy_field_is_empty () : taxonomy_field_is_empty() الشيكات خاصية tid للمعلمة $item ، بينما تتحقق number_field_is_empty() خاصية القيمة لنفس المعلمة. قد تتطلب الحقول المخصصة التحقق من حالة أكثر تعقيدًا ، من أجل اعتبار الحقل فارغًا.

وصف hook_field_is_empty () المعطى في الوثائق هو التالي:

تحديد ما يشكل عنصرًا فارغًا لنوع الحقل.

8
kiamlaluno

وجدنا القيمة الأولية في ($content['field_name']['#items'][0][value]) ، حتى تتمكن من تحديد ما إذا كان الحقل فارغًا أم لا مع التعبير

(! فارغ ($ content ['field_name'] ['# items'] [0] [value]))

أين field_name يتطابق مع اسم الحقل المطلوب.

2
eduardocs

دروبال 8

إذا احتاج شخص ما إلى نفس الإجابة في D8 ، فهذا ما أفعله لاختبار مجال عملي:

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