আমি সম্প্রতি এরকম কিছু করেছি। যেহেতু প্রোফাইল ক্ষেত্রগুলি ব্যবহার করে, তাই এটি বিষয়গুলি বেশ সহজ করে তোলে। ফর্মটির জন্য আপনি এই জাতীয় কিছু করতে পারেন:
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
আপনি যে প্রোফাইলটির জন্য ফর্মটি প্রদর্শন করতে চান তার প্রকৃত মেশিনের নামটি প্রতিস্থাপন করতে হবে।