私の具体的な使用例は次のとおりです。ユーザーがユーザー/%user /編集メニューにアクセスすることを望みません。これはDrupalにかなり埋め込まれているため、扱いにくいです。忘れられたパスワードシステム。 drupal管理者用のフォームが必要ですが、エンドユーザー用に別のフォームが必要です。特定のユーザーフィールドを公開したくないため、また、必要な更新が必要になる場合があるためです。外部データベースで処理されるため、Drupalで変更することは役に立ちません。
hook_form_alter()
を使用しても、実際にそれをカットするわけではありません。実際には、まったく異なる形式である必要があります。
自分のモジュールを使用して、user /%user/editパスをオーバーライドすることを計画していました。次に、アクセスしているユーザーが管理者であるかどうかを確認し、管理者である場合はストックフォームを提示しますが、そうでない場合はdrupal_goto('client/updates');
になりますが、これは機能しません。モジュールのページコールバックが呼び出されません。
hook_menu_alter()
を使用して、そのページのリクエストを独自のモジュールの関数に転送できます。
function MYMODULE_menu_alter(&$items) {
$items['user/%user/edit']['access callback'] = 'MYMODULE_access_callback';
$items['user/%user/edit']['page callback'] = 'MYMODULE_user_edit_page_callback';
}
function MYMODULE_access_callback($account) {
if ($something) {
return FALSE;
}
return TRUE;
}
function MYMODULE_user_edit_page_callback($account) {
if ($something) {
return drupal_get_form('some_form');
}
else {
return drupal_get_form('some_other_form');
}
}