दिनांक फ़ील्ड को सेट कर रहा है हकदार_तमाता_वाटर के माध्यम से


8

मैं dateउपयोग के माध्यम से एक प्रकार का क्षेत्र सेट करने का प्रयास कर रहा हूं entity_metadata_wrapper, हालांकि यह क्षेत्र mysql में डेटाइम के रूप में बनाया गया है, और एक नोड बनाने की उम्मीद है कि यह YYY-MM-DD HH: MM: SS प्रारूप के साथ सेट करता है, जब entity_metadata_wrapperइसका उपयोग विफल रहता है। केवल एक चीज जिसे मैं सम्मिलित करने में कामयाब रहा हूं वह टाइमस्टैम्प है, मैंने इस्को तिथि प्रारूप और मानक एक दोनों की कोशिश की है।

यहां वह लाइन है जिसे मैं अपडेट करने के लिए उपयोग करने की कोशिश कर रहा हूं:

   // sets reminder date in db
   $wrapper->field_event_reminder_date->set($reminder_date->format("Y-m-d H:i:s"));

धन्यवाद!

जवाबों:


5

मुझे पता है कि यह सवाल कुछ समय पहले पूछा गया था, लेकिन जो लोग इस सवाल को पार करते हैं, उनके लिए यह जवाब http://drupal.org/node/1803286 पर दिया गया है । इकाई API में दिनांक फ़ील्ड के लिए कोई सेटर कॉलबैक नहीं है, इसलिए आप Unit_metadata_wrapper का उपयोग करके दिनांक मान सेट नहीं कर सकते हैं। इस उत्तर में संदर्भित डू नोड एक वर्कअराउंड देता है।


अच्छा पकड़ा! -> अगली बार जब मुझे तारीख के मैदानों के साथ खेलना है, तो बुकमार्क किया जाए। धन्यवाद दोस्त।
स्टेफोसलीन

8

मैं इसे एक राउंडअबाउट तरीके से काम करने में सक्षम था। मैं शायद उसी चीज़ को पूरा करने में सक्षम हो गया time(), लेकिन यह मेरे लिए बेहतर है क्योंकि मैं ठीक उसी तरह का अनुसरण कर सकता हूं जो मैं भविष्य में कोड में कभी आया था।

// Update the Acceptance Date of Current Agreement.
$acceptance_date = new DateTime(date('Y-m-d 00:00:00'));
$company_wrapper->field_acceptance_date->set($acceptance_date->getTimestamp());

5

यदि फ़ील्ड अंतिम तिथि एकत्र नहीं करती है तो इसे टाइमस्टैम्प के साथ सेट करें:

$entity_wrapper->field_date = 1431670535;

अगर ये हो:

$entity_wrapper->field_date = array(
  'value' => '2015-05-12 11:30:38',
  'value2' => '2015-05-25 21:45:33',
);

यह यह दिखाने के लिए सबसे उपयोगी है कि बिना अंतिम तिथि वाले दिनांक कैसे सेट करें।
३:०६ पर ईबेबर्ट

3

पोस्ट किए गए उदाहरणों ने मेरे लिए काम नहीं किया। मेरे पास उपयोगकर्ता इकाई पर एक दिनांक फ़ील्ड सेटअप था, जिसमें केवल एक प्रारंभ तिथि और कोई समय नहीं था। विजेट मायने नहीं रखता, लेकिन बस डिफ़ॉल्ट पाठ क्षेत्र का उपयोग कर रहा था।

अंत में यह इकाई मेटाडेटा आवरण का उपयोग करके काम कर रहा है और केवल उपयोग करने की आवश्यकता है -> सेट (समय ())। नीचे दिया गया कोड एक चेकबॉक्स "बूलियन" फ़ील्ड, एक उत्पाद संदर्भ फ़ील्ड और दिनांक फ़ील्ड सेट करता है।

$wrapper = entity_metadata_wrapper('user', $account);
$wrapper->field_subscription_active = 1;
$wrapper->field_subscriptionplan->set($line_item->commerce_product[LANGUAGE_NONE][0]['product_id']);
$wrapper->field_subscription_signup_date->set(time());
$wrapper->save();

2

ऐसा प्रतीत होता है कि मान कैसे सेट किया जाता है यह इस पर निर्भर करता है कि यह किस प्रकार का दिनांक फ़ील्ड है। Dateफ़ील्ड प्रकार का उपयोग करते समय यह मेरे लिए काम करता था, जिसमें एक शुरुआत और समाप्ति तिथि थी।

$product->field_course_event_date->set(array(
  'value' => "2013-12-09 00:00:00",
  'value2' => "2013-12-10 00:00:00",
));

एक अलग उदाहरण का उपयोग करते हुए, इसने मेरे लिए एक Dateक्षेत्र, असीमित मूल्य, केवल समय शुरू करने के साथ काम किया :

$invitation->field_dates = array(1431670535);

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