प्रोग्राम फील्ड के अनुमत मूल्यों को प्रोग्रामेटिक रूप से कैसे अपडेट करें?


10

मैंने Drupal 7 में एक प्रोफाइल 2 खाते के लिए एक चयन सूची बनाई है। अनुमत मान सूची में, मैंने कुछ मान जोड़े हैं। अब मैं जो करना चाहता हूं, वह प्रोग्रामिक रूप से उस सूची के मानों को जोड़ें (जोड़ें, हटाएं या अपडेट करें)। मैं form_alter का उपयोग नहीं करना चाहता क्योंकि मैं चाहता हूं कि ये अपडेट डेटाबेस के लिए प्रतिबद्ध हों। मेरी समस्या यह है कि मुझे यह पता नहीं लग सकता है कि ये मान डेटाबेस में कहाँ संग्रहीत हैं या प्रोफाइल 2 से उन मानों को कैसे खींचना है, उन्हें अपडेट करें और फिर उन्हें सहेजें।

मैं इस विशेष मुद्दे पर उच्च और निम्न Googled है और यह कैसे करना है पर एक जवाब नहीं मिल सकता है। मुझे उम्मीद है कि कोई मेरी मदद कर सकता है।

धन्यवाद।

जवाबों:


23

की तर्ज पर कुछ ...

// Get the field info
$info = field_info_field('field_some_field');

// Get a reference to the values
$values = &$info['settings']['allowed_values'];

// Manipulate the values in some way, e.g.
$values['new_value'] = 'New Value';

// Save the field
field_update_field($info);

मुझे इस कोड को कहाँ जोड़ना है?
शिवम

@ शशिम आपको इस कोड को एक कस्टम मॉड्यूल से जोड़ना होगा जो आप बनाते हैं।
user5013

इसे एक बार चलाने के लिए एक हुक_अपडेट_ में डालें।
अचराफेड जेड

यदि फ़ील्ड पहले से उपयोग में है, तो भी यह पुराने अनुमत मानों को नहीं बदलेगा।
अचराफ जेडएवाई

3

आप allowed_values_functionकॉलबैक के साथ बेहतर उपयोग करेंगे :

'settings' => array(
  'allowed_values' => array(),
  'allowed_values_function' => '_my_feature_module_options_list',
),

एक इकाई क्षेत्र के लिए गतिशील अनुमत मान विकल्प बनाना देखें ।


एक अधिक पूर्ण उत्तर सहायक होगा। आपके द्वारा संदर्भित कोड अच्छा है, और स्वीकृत उत्तर के समान काम करता है, लेकिन फीचर मॉड्यूल के साथ उपयोग के लिए बनाया गया था।
जॉनाथन एलमोर '’
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.