it-swarm.asia

كيفية عرض نموذج ملف تعريف باستخدام ملف تعريف profile2

Profile2 هو وحدة تستخدم الكيانات لإنشاء ملفات تعريف منفصلة عن حساب المستخدم.

من داخل الوحدة الخاصة بي ، أريد أن أكون قادرًا على عرض نموذج لتحرير كيانات الملف الشخصي. ربما باستخدام drupal_get_form أو ربما واجهة برمجة تطبيقات Profile2 أو أي طريقة أخرى.

ما هي أفضل طريقة لتحقيق ذلك؟

11
Carlos Muñiz

فعلت شيئا مثل هذا مؤخرا. نظرًا لأن الملف الشخصي يستخدم الحقول ، فهذا يجعل الأمور بسيطة جدًا. بالنسبة للنموذج ، يمكنك فعل شيء مثل هذا:

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;
}

نظرًا لأن جميع نماذج الملف الشخصي هي فقط الحقول المرفقة بالملف الشخصي ، يمكنك ببساطة إرفاق الحقول بنفسك بالنموذج ، باستخدام Drupal Core APIs:

  • field_attach_form يضيف الحقول إلى النموذج.
  • field_attach_validate يعالج التحقق.
  • field_attach_submit لمعالجة إضافة القيم إلى الكيان (الملف الشخصي).
  • أخيرًا ، ستحتاج إلى حفظ كيان الملف الشخصي باستخدام profile2_save.

بعد تصفح رمز الوحدة النمطية profile2 ، وجدت أنه يوفر وظيفة مجمعة لإرفاق الحقول بالنموذج وحفظ النموذج. هذا أبسط ، ولكن عند القيام بذلك ، تفقد القليل من التحكم. لاستخدام هذا تحتاج إلى استخدام profile2_attach_form. سيؤدي هذا أيضًا إلى معالجة التحقق من البيانات وحفظها.

لاستخدام الكود أعلاه ، يجب أن تكون قادرًا على c/p ، وإعادة تسمية النموذج واستبدال profile_machine_name مع اسم الجهاز الفعلي للملف الشخصي الذي تريد عرض النموذج له.

20
googletorp