it-swarm.asia

كيف يمكنني تعديل نموذج تسجيل الدخول باستخدام hook_form_alter ()؟

أحاول تغيير نموذج تسجيل الدخول باستخدام الرمز التالي:

function git_form_alter(&$form, $form_state, $form_id) {
  $forms = array(
    'user_login_block' => 'user-login-form',
    'user_login' => 'user-login'
  );
  if (array_key_exists($form_id, $forms)) {
       //my altering code
    }
}

حصلت على هذا من وحدة openidselector التي تقدم بعض أدوات JavaScript وأكثر أو أقل ما أحاول القيام به.
عندما أذهب إلى mysite/user/login لا يتم استدعاء الكتلة حيث يتعين علي تغيير النموذج. إنه ببساطة لا يستدعي hook_form_alter().

شيء آخر هو مع نموذج التسجيل ، أو أي شكل آخر ، الذي يدعو الخطاف.

يمكن لأي شخص أن يقول لي ماذا يمكنني أن أفعل؟ كيف يمكن أن يستخدم openidselector نفس الطريقة ، ولكن في هذه الوحدة النمطية يعمل الكود ، بينما لا يعمل في الكود الخاص بي؟

7
PartySoft

عندما أذهب إلى mysite/user/login ، لا يتم استدعاء الكتلة حيث يتعين علي تغيير النموذج. ببساطة لا يستدعي hook_form_alter ().

example.com/user/login لا يُظهر حظر تسجيل دخول المستخدم ؛ يظهر نموذج تسجيل الدخول. يجب أن يعمل الكود الخاص بك ، حتى لو كنت أفضل جعل الكود أبسط (إذا كنت لا تستخدم "user-login-form" بأي شكل من الأشكال).

function git_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'user_login_block' || $form_id == 'user_login') {
    // …
  }
}

بالنسبة لسبب عدم عمل الكود ، يمكنني التفكير في الأسباب التالية:

  • اسم الخطاف لا يطابق الاسم المختصر المستخدم للوحدة النمطية ؛ على سبيل المثال ، الاسم المختصر للوحدة النمطية هو "git_form" وأنت تستخدم git_form_alter() لتنفيذ hook_form_alter() عندما يجب أن تكون git_form_form_alter().
  • أنت تقوم بتحرير وحدة ممكّنة. في هذه الحالة ، عندما تضيف خطافًا جديدًا إلى الشفرة ، تحتاج أيضًا إلى مسح ذاكرة التخزين المؤقت المستخدمة بواسطة Drupal as Drupal يخزن قائمة الخطافات التي تم تنفيذها بواسطة وحدات الطرف الثالث.
  • الوحدة النمطية غير ممكّنة.
6
kiamlaluno

الكود الخاص بك جيد ، وهو يعمل بشكل جيد. على الأقل هذا الجزء الذي عرضته.

أفترض أنك وضعتها في وحدة 'git' ، وأن الوحدة ممكّنة؟ هل لديك أي كود (هناك أو في أي مكان آخر) يمكن أن يكسر التدفق ويوقف خطافك من التنفيذ؟

0
Maciej Zgadzaj