次のコードでログインフォームを変更しようとしています。
_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
}
}
_
これは、JavaScriptウィジェットを導入するopenidselectorモジュールから取得したもので、多かれ少なかれ、私がやろうとしていることです。
mysite/user/loginにアクセスしても、フォームを変更する必要のあるブロックは呼び出されません。単にhook_form_alter()
を呼び出さないだけです。
別のことは、フックを呼び出している登録フォームまたはその他のフォームです。
誰か私に何ができるか教えてもらえますか? openidselectorが同じメソッドを使用する可能性はありますが、そのモジュールではコードは機能しますが、私のコードでは機能しませんか?
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_alter()
の実装にhook_form_alter()
を使用している場合、git_form_form_alter()
にする必要があります。コードは問題なく、問題なく動作します。少なくとも、あなたが示したこの部分。
私はあなたがそれを「git」モジュールに入れて、モジュールが有効になっていると思いますか?フローを壊してフックの実行を停止する可能性のあるコードがありますか?