كيف يمكنك التحقق من أن الحقل فارغ ، عندما يكون لديك كائن عقدة $ ؟.
لقد وجدت هذا كحل ممكن:
$field = field_get_items('node', $node, 'field_post_image');
يمكنني التحقق الآن:
تحديث . هذا غير موثوق به ، على الرغم من أنني أعدت أنه نجح لي أمس.
isset($field);
لكنني أتساءل عما إذا كانت هناك طريقة أفضل.
تنورني
إذا قرأت في الوثائق ترجع الدالة FALSE
إذا لم تكن هناك بيانات. isset()
ستفشل في الواقع لأنك تقوم بتعيين FALSE
للمتغير لذا تم تعيينه بالفعل على شيء ما. سيكون بناء الجملة الصحيح:
$field = field_get_items('node', $node, 'field_post_image');
if ($field) {
//Do something with the field
}
else{
//There are no results
}
يمكنك استخدام المقتطف التالي للتحقق مما إذا كان الحقل فارغًا.
$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 () المعطى في الوثائق هو التالي:
تحديد ما يشكل عنصرًا فارغًا لنوع الحقل.
وجدنا القيمة الأولية في ($content['field_name']['#items'][0][value]
) ، حتى تتمكن من تحديد ما إذا كان الحقل فارغًا أم لا مع التعبير
(! فارغ ($ content ['field_name'] ['# items'] [0] [value]))
أين field_name
يتطابق مع اسم الحقل المطلوب.
إذا احتاج شخص ما إلى نفس الإجابة في D8 ، فهذا ما أفعله لاختبار مجال عملي:
if ($entity->hasField('field_event_date_start')
&& !$entity->get('field_event_date_start')->isEmpty()) {
// Do something ...
}