изменить порядок полей формы user_profile_form - PullRequest
1 голос
/ 15 декабря 2009

Когда пользователь входит в систему, он будет перенаправлен на страницу профиля пользователя, для которой установлено поле Моя учетная запись.

набор полей имеет 2 поля: «Имя пользователя:», «Адрес электронной почты:». эти 2 поля генерируются Drupal.

те 2 поля, которые содержатся в форме с идентификатором ("user_profile_form"). Я хочу изменить порядок этих 2 полей.

Я пытался перехватить user_profile_form внутри hook_form_alter. код как следует: $form['account']['name']['#weight'] = 1;

но это не увенчалось успехом, drupal даже не отображал поле 'name', поэтому имя пользователя не отображалось в браузере.

1 Ответ

2 голосов
/ 15 декабря 2009

То, что вы сделали, абсолютно правильно и, вероятно, сработало. Вы можете изменить вес полей с помощью метода, описанного выше.

Поле имени пользователя не всегда отображается. Причина в том, что требуется разрешение: change own username. Если этот параметр не задан, вам не разрешено изменять имя пользователя, и поле отображаться не будет.

Информация об отладке.
Одной вашей информации недостаточно для отладки. Исходя из того, что вы описываете, вы делаете правильные вещи, но другие модули могут сделать вещи немного сложнее для вас. Модуль devel довольно хорош, когда дело доходит до отладки, он определяет две функции, которые я часто использую при отладке:

  • dpm() довольно печатает переменную в области сообщений, используя krumo.
  • dd() Печатает / сохраняет переменную в файл журнала. Полезно, когда вы не можете просматривать сообщения на экране.

Я бы посоветовал вам посмотреть переменную $form до и после ее изменения.

То, что могло бы пойти не так:

  • Вы не забыли передать переменную $form по ссылке, используя обозначение &?
  • Другой модуль изменяет вашу форму после вас?
  • Проверяете ли вы правильный идентификатор формы, чтобы изменить правильную форму?

Это несколько указателей, прежде чем вы принесете больше информации, все, что я могу сделать, это угадать, в чем конкретно может быть ваша проблема. Я сделал что-то подобное несколько дней назад, поэтому я знаю, что то, что вы описываете, не должно быть проблемой.

...