फ़ील्ड का मान बदलने के लिए हुक_नोड_स्प्रेस का उपयोग कैसे करें


9

असल में, मैं पहले नाम और उपनाम को एक साथ $ नोड-> field_par_contact_name में डालना चाहता हूं

लेकिन यह मुझे चेतावनी देता है। (निचे देखो)

फंक्शन पार्टनरशिप_नोड_स्प्रेव ($ नोड) {
  अगर ($ नोड-> टाइप == 'साझेदारी') {
    $ First_name = $ नोड-> field_par_contact_first_name ['und'] [0] ['नाम]];
    $ उपनाम = $ नोड-> field_par_contact_surname ['und'] [0] ['नाम'];

    // https://drupal.org/project/field_hidden
    // छिपा हुआ चर
    $ नोड-> field_par_contact_name ['und'] [0] ['value'] = $ first_name। ''। उपनाम $;

    // बचाने के बाद चेतावनी: array_flip (): केवल STRING और INTEGER मान फ्लिप कर सकते हैं! DrupalDefaultEntityController-> लोड () में ... (drupal-7.23 / / /.in.inc की लाइन 173)
  }
}

अद्यतन , कृपया छवि देखें: यहां छवि विवरण दर्ज करें


क्या आप प्रोग्राम को फॉर्म सबमिट कर रहे हैं? मेरा मतलब है कि आप hook_form_alter का उपयोग कर रहे हैं? और फिर drupal_form_submit अपने कोड में कहीं?
हर्शल

जवाबों:


6

शुरुआत के लिए, आप संभवतः फ़ील्ड मान के लिए गलत सरणी कुंजी का उपयोग कर रहे हैं जिसे आप सहेज रहे हैं; वहां value नाम ’का 'मूल्य’ होना चाहिए।

$node->field_par_contact_name['und'][0]['value'];

दूसरा, आप वास्तव में अपने "पहले नाम" और "उपनाम" क्षेत्रों के लिए टैक्सोनॉमी टर्म रेफरेंस फ़ील्ड का उपयोग कर रहे हैं। संदर्भ क्षेत्रों के बारे में एक महत्वपूर्ण बात यह है कि आप हमेशा यह नहीं मान सकते हैं कि संदर्भित इकाइयां पूरी तरह से भरी हुई हैं और आपकी वस्तु में उपलब्ध हैं। डिफ़ॉल्ट रूप से, जब नोड ऑब्जेक्ट लोड किया जाता है, तो वह फ़ील्ड केवल इस तरह दिखता है:

$node->field_par_contact_first_name (Array)
  'und' (Array)
    0 (Array)
      'tid' => 284

केवल 'tid' कुंजी निश्चित रूप से है। 'नाम' संदर्भित शब्द की एक संपत्ति है, और आमतौर पर स्वचालित रूप से उपलब्ध नहीं है। (बाद में कोड वास्तव में संदर्भित शब्द को लोड कर सकता है और इसे $ नोड ऑब्जेक्ट के भीतर उपलब्ध करा सकता है, लेकिन ऐसा सिर्फ इसलिए होता है।)

यदि आपके "प्रथम नाम" और "उपनाम" फ़ील्ड संदर्भों के बजाय पाठ फ़ील्ड थे, तो आपके पास इसका बहुत आसान समय होगा। फिर, उन मूल्यों को सीधे नोड के रूप में संदर्भित किया जाएगा, बजाय एक अलग वर्गीकरण के संदर्भित होने के।

यदि आप टैक्सोनॉमी शब्द के संदर्भ का उपयोग करते हुए अटक गए हैं, तो आपको संदर्भ कोड को लोड करने के लिए अपने कोड में एक बिंदु बनाना चाहिए, फिर $ टर्म-> नाम की संपत्ति से आपके लिए आवश्यक मान प्राप्त करें।


ऊपर चित्र देखें कोई 'मूल्य' नहीं है
केनपेटर

आह, आप पहले नाम और उपनाम के लिए टैक्सोनॉमी टर्म रेफरेंस फ़ील्ड का उपयोग कर रहे हैं, न कि टेक्स्ट फ़ील्ड जैसा कि मैंने माना। वह अजीब है। :) उत्तर को अपडेट करें।
लेस लिम

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