it-swarm.asia

تحذير صارم: يجب تمرير المتغيرات فقط حسب المرجع

أحصل على الخطأ التالية:

تحذير صارم: يجب تمرير المتغيرات فقط حسب المرجع في () (السطر 18 من /home/sites/dev/theparce/sites/all/themes/parce/block--block--3.tpl.php).

هذا هو رمز الكتلة الذي يسبب هذا الخطأ.

if ($user_gallery) {
  print render(node_show($user_gallery));  // Line 18
  print drupal_render ($user_gallery_edit);

}
else {
  print drupal_render($user_gallery_new);
}

لماذا أحصل على هذا الخطأ ، حتى إذا تمت طباعتي بالكامل كما هو متوقع؟

21
silkAdmin

يحدث هذا الخطأ عندما تتوقع دالة مرجعًا كمعلمة ، ولكنها لا تحصل على مرجع.

في حالتك ، render() يتم تعريفه على أنه render(&$element) ، ولكن node_show() يتم تعريفه على أنه node_show($node, $message = FALSE) وليس &node_show($node, $message = FALSE).
وينطبق الشيء نفسه على drupal_render() ، حيث يتم تعريف الوظيفة على أنها drupal_render(&$elements).

كما هو موضح في تمرير حسب المرجع ، عندما تتطلب دالة معلمة مرجعية ، يمكنك تمريرها إلى الوظيفة:

  • المتغيرات (على سبيل المثال ، متغير مؤقت يحتوي على نتيجة دالة لا تقوم بإرجاع مرجع)

  • تم إرجاع المراجع من الوظائف

باستخدام التعبيرات الأخرى ، تكون النتيجة غير محددة ، وهي تعتمد على إصدار PHP.

  • ينتج render(node_show()) خطأ فادحًا في PHP 5.0.5 وإشعار معايير صارمة في PHP 5.1.1 وإشعار في PHP 7.0 .0

  • ينتج render(5) خطأ فادحًا

  • render(new DateTime()) يصدر إشعارًا في PHP 7.0.7

52
kiamlaluno