ক্ষেত্রের মান পরিবর্তন করতে কীভাবে hook_node_presave ব্যবহার করবেন


9

মূলত, আমি প্রথম নাম এবং উপাধি একসাথে $ নোড-> ফিল্ড_পার_কন্ট্যাক্ট_নামে রাখতে চাই

তবে এটি আমাকে সতর্ক করে দেয়। (নিচে দেখ)

ফাংশন অংশীদারিত্ব_নোড_প্রসভে (ode নোড) {
  যদি (ode নোড-> টাইপ == 'অংশীদারিত্ব') {
    $ প্রথম_নাম = ode নোড-> ক্ষেত্র_পাড়_কন্ট্যাক্ট_প্রথম_নাম ['und'] [0] ['নাম'];
    urn উপাধি = ode নোড-> ক্ষেত্র_পাড়_কন্ট্যাক্ট_সুলভ ['und'] [0] ['নাম'];

    // https://drupal.org/project/field_hided
    // লুকানো পরিবর্তনশীল
    ode নোড-> ক্ষেত্র_পড়_কন্ট্যাক্ট_নাম ['und'] [0] ['মান'] = $ প্রথম_নাম। ''। উপাধি $;

    // সংরক্ষণের পরে সতর্কতা: অ্যারে_ফ্লিপ (): কেবলমাত্র STRING এবং INTEGER মানগুলি ফ্লিপ করতে পারে! DrupalDefaultEntityController-> লোড () এর 173 লাইন ...
  }
}

আপডেট হয়েছে , দয়া করে চিত্র দেখুন: এখানে চিত্র বর্ণনা লিখুন


আপনি প্রোগ্রামক্রমে ফর্ম জমা দিচ্ছেন? মানে আপনি হুক_ফর্ম_ল্টার ব্যবহার করছেন? এবং তারপরে আপনার কোডের কোথাও দ্রুপাল_ফর্ম_সমনমিট করবেন?
হর্ষাল

উত্তর:


6

প্রারম্ভিকদের জন্য, আপনি সম্ভবত যে ক্ষেত্রের মানটি সংরক্ষণ করছেন তার জন্য আপনি সম্ভবত ভুল অ্যারে কী ব্যবহার করছেন; 'নাম' সেখানে 'মান' হওয়া উচিত।

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

দ্বিতীয়ত, আপনি প্রকৃতপক্ষে আপনার "প্রথম নাম" এবং "উপাধি" ক্ষেত্রগুলির জন্য শ্রমশক্তি টার্ম রেফারেন্স ক্ষেত্রগুলি ব্যবহার করছেন। রেফারেন্স ক্ষেত্রগুলি সম্পর্কে একটি গুরুত্বপূর্ণ বিষয় হ'ল আপনি সর্বদা অনুমান করতে পারবেন না যে রেফারেন্সযুক্ত সত্তাগুলি পুরোপুরি লোড হয়ে গেছে এবং আপনার অবজেক্টে উপলব্ধ। ডিফল্টরূপে, নোড অবজেক্টটি লোড হওয়ার পরে, ক্ষেত্রটি কেবল এটির মতো দেখায়:

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

কেবলমাত্র 'টাইড' কীটি অবশ্যই আছে। 'নাম' রেফারেন্সড টার্মের একটি সম্পত্তি এবং সাধারণত স্বয়ংক্রিয়ভাবে উপলব্ধ হয় না। (পরবর্তী কোডগুলি প্রকৃতপক্ষে রেফারেন্সড শব্দটি লোড করতে পারে এবং এটিকে নোড অবজেক্টের মধ্যে উপলভ্য করতে পারে, তবে তা যদি হয় তবে তা ঘটবে))

আপনার "ফার্স্ট নেম" এবং "উপাধি" ক্ষেত্রগুলি উল্লেখের পরিবর্তে পাঠ্য ক্ষেত্র যদি হয় তবে আপনার এটির অনেক সহজ সময় হবে। তারপরে, এই মানগুলি সরাসরি নোডের সাথে সম্পর্কিত হবে, পরিবর্তে পৃথক শ্রেণীবিন্যাসের পদটি উল্লেখ করা হচ্ছে।

আপনি যদি ট্যাক্সোনমি শব্দটি রেফারেন্স ব্যবহার করে আটকে থাকেন তবে রেফারেন্সড টার্মটি লোড করার জন্য আপনার কোডটিতে একটি বিন্দু তৈরি করা উচিত, তারপরে $ টার্ম-> নামের সম্পত্তি থেকেই আপনার প্রয়োজনীয় মানগুলি পান।


উপরের চিত্রটি দেখুন। কোনও 'মান' নেই
কেনেপিটার

আহ, আপনি প্রথম নাম এবং উপাধির জন্য শ্রমশক্তি শর্তাদি রেফারেন্স ক্ষেত্রগুলি ব্যবহার করছেন, আমার ধারণা হিসাবে পাঠ্য ক্ষেত্রগুলি নয়। এটা অদ্ভুত। :) উত্তর আপডেট করেছেন।
লেস লিম

আপনি সঠিক.
কেনেপিটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.