समस्या यह है कि आपको एक खाली मान सेट करना होगा जो आपके क्षेत्र के डेटा प्रकार के अनुकूल हो। यदि आप नहीं करते हैं, तो आपको एक अपवाद मिलेगा। पास होने NULL
या array()
जब एक स्ट्रिंग की उम्मीद की जाती है, इसलिए एक त्रुटि बढ़ जाएगी।
एक और बात का ध्यान रखें कि आपके द्वारा पास किया जाने वाला डेटा इस बात पर भी निर्भर करेगा कि आपका क्षेत्र एकल मूल्य है, बहु-मूल्य फ़ील्ड है, या एकाधिक गुणों वाला फ़ील्ड है।
यदि आपका फ़ील्ड एक एकल मान है (और इस प्रकार फ़ील्ड के लिए आवरण EntityValueWrapper का एक उदाहरण है ) तो आपको इसे प्रश्न में डेटा प्रकार के साथ संगत एक खाली मान असाइन करना चाहिए । उदाहरण के लिए दो निम्नलिखित विधियाँ समतुल्य हैं:
$wrapper->title = '';
$wrapper->title->set('');
हालांकि निम्नलिखित तीन उदाहरण एक अपवाद को बढ़ाएंगे, क्योंकि डेटा प्रकार title
फ़ील्ड के साथ संगत नहीं हैं :
$wrapper->title->set();
$wrapper->title->set(NULL);
$wrapper->title->set(array());
यदि आपका क्षेत्र कई गुणों वाला एक क्षेत्र है (उदाहरण के लिए एक स्वरूपित पाठ क्षेत्र, जो दोनों एक value
और format
संपत्ति को परिभाषित करता है ) और इस प्रकार EntityStructureWrapper का उदाहरण है , तो array()
या NULL
सही खाली मान होगा। तो आप निम्न कार्य कर सकते हैं:
$wrapper->field_formatted_text = array();
$wrapper->field_formatted_text = NULL;
लेकिन उस मामले में, एक खाली स्ट्रिंग पास करने से एक त्रुटि पैदा हुई होगी। ध्यान दें कि आप value
इसके बजाय संपत्ति को खाली करने के लिए चुन सकते हैं , जिस स्थिति में एक स्ट्रिंग सही डेटा प्रकार है:
$wrapper->field_formatted_text->value = '';
अंत में, यदि आपका फ़ील्ड एक बहु-मूल्य फ़ील्ड है (और इस प्रकार आपका आवरण EntityListWrapper का एक उदाहरण है ) तो array
या NULL
सही खाली मान हैं, और निम्नलिखित तीन लाइनें बराबर हैं:
$wrapper->field_example_multiple->set();
$wrapper->field_example_multiple = array();
$wrapper->field_example_multiple = NULL;
नोट: clear
रैपर पर विधि को कॉल करना फ़ील्ड को रिक्त मान पर सेट करने के बराबर नहीं है। जब फ़ील्ड को रिक्त मान पर सेट किया जाता है, तो वह EntityMetadataWrapper :: updateParent को फ़ील्ड के पैरेंट रैपर पर कॉल करता है । यह उन अन्य चीजों के बीच सुनिश्चित करता है, जिन्हें hook_entity_property_infosetter callback
द्वारा परिभाषित किया जाता है। कॉलिंग ऐसा नहीं करती है।clear
EntityStructureWrapper::clear()
याEntityValueWrapper::clear()
शायद तरीकों की तलाश कर रहे हैं ?