एक इकाई से क्षेत्र का मूल्य प्राप्त करना


11

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

सामान्य रूप से किसी क्षेत्र के मान को php के साथ अपने टेम्पलेट में खींचने के लिए मैं निम्नलिखित कार्य करूंगा:

<?php echo $node->field_name[$node->language][0]['value']; ?>

हालाँकि यह निकाय / संस्थाओं के साथ काम नहीं करता है।

किसी को एक इकाई के भीतर एक क्षेत्र के लिए ऐसा करने का तरीका पता है? कुछ लोगों ने डिवेल और डीपीएम () फ़ंक्शन का उपयोग करने का सुझाव दिया है लेकिन मुझे नहीं पता कि उन दोनों का उपयोग कैसे किया जाए।

इस क्षेत्र के मूल्य को मैं कैसे प्राप्त कर सकता हूं, इस पर कुछ विशिष्ट उदाहरण वास्तव में मुझे बहुत मदद करेंगे।

जवाबों:


13

क्या आपने Unit_metadata_wrapper के साथ मानों को एक्सेस करने की कोशिश की है ?

$entityform_id = 12; // entity form id
$entityform = entityform_load($entityform_id);
$entityform_wrapper = entity_metadata_wrapper('entityform', $entityform);
// Access fields with $entityform_wrapper->field_name->value() or ->field_name->raw()
drupal_set_message($entityform_wrapper->field_my_field->value()); // for example

4
भविष्य के पाठकों के लिए ध्यान दें: यह सही है, लेकिन एंटिटी एपीआई मॉड्यूल को स्थापित करने के लिए एक इकाई क्षेत्र तक पहुंचने के लिए आवश्यक नहीं है; ड्रुपल कोर में पहले से ही एक इकाई क्षेत्र का उपयोग करने के लिए कार्य हैं।
kiamlaluno

हां, लेकिन ओपी ने टैग किया और निर्दिष्ट किया कि उनके पास एंटिटी एपीआई मॉड्यूल स्थापित है, इसलिए unit_metadata_wrapper, इसके अलावा यह Unitforms मॉड्यूल की एक निर्भरता है।
डेविड थॉमस

2
Unit-api Drupal 7 से लागू की गई Entity API के लिए टैग है, Entity API मॉड्यूल के लिए नहीं। नोट शुरुआती डेवलपर्स से बचने के लिए लगता है कि संस्थाओं से निपटने के लिए एंटिटी एपीआई मॉड्यूल आवश्यक है। मैंने यह नहीं कहा कि उत्तर सही नहीं था। :)
kiamlaluno

7

एंटिटी एपीआई मॉड्यूल का उपयोग किए बिना, एक इकाई से जुड़े क्षेत्र का मूल्य प्राप्त करने के लिए, आप फ़ील्ड_गेट_टाइम्स () का उपयोग करते हैं ; आप बस इकाई प्रकार, इकाई वस्तु और क्षेत्र का नाम पास करते हैं।

उदाहरण के लिए, किसी टिप्पणी का निकाय प्राप्त करने के लिए, आप निम्नलिखित कोड का उपयोग करते हैं।

if ($items = field_get_items('comment', $comment, 'comment_body')) {
  // ...
}

नोड का शरीर पाने के लिए, आप निम्नलिखित कोड का उपयोग कर सकते हैं।

if ($items = field_get_items('node', $node, 'body')) {
  // ...
}

इकाई वस्तु वस्तु से लौटे है ) entity_load ( , या उस इकाई के लिए एक विशिष्ट लोड समारोह, जैसे node_load () , comment_load () , या taxonomy_term_load () । Drupal 8 में, उन कार्यों के लिए रैपर हैं entity_load()

यदि आप फ़ील्ड की सामग्री दिखाना चाहते हैं, तो आपको field_view_field () का उपयोग करना चाहिए ।


0

आप आम तौर पर $ नोड गुणों पर प्राप्त कर सकते हैं क्योंकि आप या आपके द्वारा उपयोग किए जा रहे कुछ कोड पहले से नोड_लोड () कह रहे हैं।

इससे पहले कि आप इसके गुणों को प्राप्त कर सकें, आपको एक इकाई को पूरी तरह से लोड करने की आवश्यकता है।

Unit_load () http://api.drupal.org/api/drupal/includes%21common.inc/function/entity_load/7 का उपयोग करें

तब आपके पास वास्तव में एक भरी हुई इकाई वस्तु होगी जिसे आप के क्षेत्रों में प्राप्त कर सकते हैं।

Dpm () का उपयोग करना किसी भी अन्य फ़ंक्शन के समान है, आपको बस डेवेल मॉड्यूल को स्थापित करने की आवश्यकता है।

तो, कुछ इस तरह से करें:

<?php
$entity = entity_load('myEntityType', $entity_id);
dpm($entity);
?>

0

प्रयत्न:

$value= field_get_items('entityform', $entityform, 'field_myfieldname');
print '<p>the value is: '.$value.'</p>';

यह क्षेत्र के मूल्य को प्रिंट करना चाहिए।

अगर यह एक सरणी है तो यह कोशिश करें:

$values = field_get_items('entityform', $entityform, 'field_myfieldname');
$value = $values[0]['value'];
print '<p>the value is: '.$value.'</p>';

याद रखें कि यह कच्चा आउटपुट है और यह इस पर निर्भर करता है कि मूल्य कहां से आता है, आपको यहां मैन्युअल रूप से मूल्य को सैनिटाइज करना पड़ सकता है।

देखें: फ़ंक्शन field_get_items


0

इसे अपने किसी मॉड्यूल के अंदर रखें और फॉर्म के पेज पर जाएं और आपको वह जानकारी मिल जाएगी जिसकी आपको तलाश है।

function yourmodulename_form_alter(&$form, &$form_state, $form_id) {

  dpm($form);

}

-1

Dpm का उपयोग करने और उस मॉड्यूल को स्थापित करने के बजाय जिसका मैं उपयोग करता हूं:

print_r('<pre>');
print_r($node);
print_r('</pre>');

उम्मीद है कि इससे आपको मूल्य कम करने में मदद मिलेगी।


हम्म्, वह मेरे लिए कुछ भी आउटपुट नहीं कर रहा है :( ऐसा इसलिए हो सकता है क्योंकि मैं एक यूनिटफॉर्म सबमिशन देख रहा हूं, और एक नोड नहीं? या एक एंटरफॉर्मफॉर्म सबमिशन वास्तव में एक नोड होगा? इसलिए भ्रमित।
डस्टिन

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

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