প্রোফাইল 2 মডিউল ব্যবহার করে কীভাবে একটি প্রোফাইল ফর্ম প্রদর্শন করবেন


11

প্রোফাইল 2 একটি মডিউল যা ব্যবহারকারীর অ্যাকাউন্ট থেকে পৃথক প্রোফাইল তৈরি করতে সত্তা ব্যবহার করে।

আমার মডিউলটির মধ্যে থেকে, আমি প্রোফাইল সত্ত্বাগুলি সম্পাদনা করতে একটি ফর্ম প্রদর্শন করতে সক্ষম হতে চাই। সম্ভবত drupal_get_for বা সম্ভবত প্রোফাইল2 এর এপিআই বা অন্য কোনও পদ্ধতি ব্যবহার করা।

এটি সম্পর্কে সবচেয়ে ভাল উপায় কি?

উত্তর:


20

আমি সম্প্রতি এরকম কিছু করেছি। যেহেতু প্রোফাইল ক্ষেত্রগুলি ব্যবহার করে, তাই এটি বিষয়গুলি বেশ সহজ করে তোলে। ফর্মটির জন্য আপনি এই জাতীয় কিছু করতে পারেন:

function my_profile_form($form, &$form_state) {
  global $user;
  if (!isset($form_state['profiles'])) {
    $profile = profile2_load_by_user($user, 'profile_machine_name');
    if (!$profile) {
      $profile = profile_create(array(
        'type' => 'profile_machine_name',
        'uid' => $user->uid
      ));
    }
    $form_state['profiles'][$profile->type] = $profile;
  }

  // Use field attach form and handle the fields yourself:
  field_attach_form('profile2', $profile, $form, $form_state);
  // Or use profile2 API which is simpler
  profile2_attach_form($form, $form_state);

  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
  );
  return $form;
}

যেহেতু সমস্ত প্রোফাইল ফর্মটি কেবলমাত্র সেই ক্ষেত্র যা প্রোফাইলের সাথে সংযুক্ত থাকে, আপনি কেবলমাত্র ড্রপাল কোর এপিআই ব্যবহার করে ক্ষেত্রগুলিকে ফর্মের সাথে সংযুক্ত করতে পারেন:

  • field_attach_form ফর্মগুলিতে ক্ষেত্রগুলি যুক্ত করে।
  • field_attach_validate বৈধতা হ্যান্ডলগুলি।
  • field_attach_submit সত্তা (প্রোফাইল) এ মান যুক্ত করে পরিচালনা করতে।
  • অবশেষে আপনাকে প্রোফাইল সত্ত্বাটি ব্যবহার করে সংরক্ষণ করতে হবে profile2_save

প্রোফাইল 2 মডিউল কোড ব্রাউজ করার পরে, আমি দেখতে পেলাম যে এটি ক্ষেত্রগুলিকে ফর্মের সাথে সংযুক্ত করতে এবং ফর্মটি সংরক্ষণ করতে একটি মোড়ক ফাংশন সরবরাহ করে। এটি সহজ, তবে এটি করার ক্ষেত্রে আপনি কিছুটা নিয়ন্ত্রণ ছাড়ুন। এটি ব্যবহার করার জন্য আপনাকে এটি ব্যবহার করতে হবে profile2_attach_form। এটি করার সাথে সাথে ডেটাটির বৈধতা এবং সংরক্ষণও হবে।

উপরের কোডটি ব্যবহার করার জন্য আপনাকে এটি সি / পি করতে সক্ষম হবে, ফর্মটির নাম পরিবর্তন করতে হবে এবং profile_machine_nameআপনি যে প্রোফাইলটির জন্য ফর্মটি প্রদর্শন করতে চান তার প্রকৃত মেশিনের নামটি প্রতিস্থাপন করতে হবে।


আমি বুঝতে পারছি না এখানে কী হচ্ছে। আমার কেবল প্রোফাইল 2 ফর্মটি প্রদর্শন করা দরকার। এটা কি সম্ভব?
কার্লোস মুইজ

যখন আমি আপনার কোডটি আমার মডিউলে ব্যবহার করি এটি আমাকে এই ত্রুটিটি দেয়: মারাত্মক ত্রুটি: সি-তে অসমর্থিত অপারেণ্ড প্রকারগুলি: line wamp \ www \ कार्यरत \ মডিউলগুলি \ ক্ষেত্র \ ক্ষেত্র att ফিল্ড att 5. লাইনে 5.1
কার্লোস

@ চার্লি আমি আমার উত্তরটি আরও বিশদ সহ আপডেট করেছি এবং প্রোফাইল 2 এপিআই ব্যবহার করে একটি বিকল্প এবং সহজ সমাধান সরবরাহ করেছি।
googletorp

এটি গুগলরপ !!! আপনার উত্তরটি একটি সামান্য সম্পাদনার সাথে কাজ করেছে: ফাংশনটির শেষে আমি যুক্ত করেছি: ফিরতি $ ফর্মটি কেবলমাত্র এটিই drupal_get_form () দিয়ে কল করে এটি প্রদর্শিত হয়েছিল। যদি ফিরতি $ ফর্ম ব্যতিরেকে এটি প্রদর্শন করার বিকল্প উপায় ছিল তবে দয়া করে ব্যাখ্যা করুন, অন্যথায় আপনাকে অনেক ধন্যবাদ!
কার্লোস মুইজ

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