सख्त चेतावनी: केवल चर को संदर्भ द्वारा पारित किया जाना चाहिए


21

मुझे निम्नलिखित त्रुटि मिलती है:

सख्त चेतावनी: केवल () / (18/home/sites/dev/theparce/sites/all/themes/parce/block--3--pl.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);
}

मुझे वह त्रुटि क्यों मिलती है, भले ही मुझे उम्मीद के मुताबिक सभी मुद्रित हों?

जवाबों:


52

वह त्रुटि तब होती है जब कोई फ़ंक्शन पैरामीटर के रूप में संदर्भ की अपेक्षा कर रहा है, लेकिन उसे संदर्भ नहीं मिल रहा है।

आपके मामले में, 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 में एक नोटिस पैदा करता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.