5

つまり、管理者、LA 管理者、ユーザーの 3 種類のユーザーがいます。管理者と LA 管理者がユーザーのユーザー名、パスワード、タイムゾーンを編集できないように設定しようとしています。管理者用のデフォルトのユーザー編集フォームについて話しているのですが、フォーム ID は「user-profile-form」です。

カスタム モジュールを作成しましたが、機能していないようです。私が間違っているかもしれないことは何ですか?

var_dump でさえ出力していないようです。キャッシュをクリアし、モジュールが有効になっていることを確認しました。

 function profile_change_form_alter(&$form, $form_state, $form_id) {
    if ($form_id === 'user-profile-form') {
       var_dump ($form);

       hide($form['account']['pass']);
       hide($form['account']['current_pass_required_values']);
       hide($form['account']['current_pass']);
    }
}
4

3 に答える 3

6

使用hide()するとフィールドが削除されますが、非表示はフィールドのレンダリングを「遅らせる」ためのものです...非表示にするのと同じですが、(テンプレートファイルで)他の場所に印刷します。後で印刷しないと、ページにレンダリングされず、保存されないため、必須の場合は検証エラーなどが発生します。

非表示にしてユーザーには見えないようにしたいが、フォームにフィールドの以前の値を保持させたい場合は、次のようなものを使用します。

$form['field_yourfield']['#access'] = FALSE;

そして、それを表示したいが無効にしたい (ユーザーは値を変更できない) 場合:

$form['field_yourfield']['#disabled'] = TRUE;
于 2014-01-10T10:50:46.277 に答える
3

実際には、コードを変更user-profile-formして機能させる必要がありました。user_profile_form何らかの理由で、drupal にはアンダースコアが必要です。

于 2013-06-12T18:16:23.063 に答える