Автоматически создавать учетную запись пользователя при отправке другой формы

У меня есть форма, созданная из другого модуля. Я хочу добавить в эту форму 2 поля: 1. электронная почта, 2. пароль. Я думаю, что могу сделать это с помощью hook_form_alter. Затем я хотел бы создать учетную запись пользователя и войти в систему при нажатии кнопки отправки, а затем выполнить действие, определенное формой.

Исходная форма не имеет свойства #submit... она имеет только свойство #action.

Я добавляю свойство #submit следующим образом: $form['#submit'] = array('accesscustom_submit');

но accesscustom_submit, похоже, не вызывается. Я думаю, что форма просто перенаправляется на уже определенный URL-адрес #action. Любые идеи?


person berto77    schedule 30.08.2010    source источник


Ответы (1)


Вы пытаетесь редактировать форму комментариев? $form['#action'] - довольно редкое свойство... я думаю, что форма комментария - единственная, которая его использует.

В любом случае вы можете довольно легко создать учетную запись, настроив массив пользователей ($account = array('name' => $username, 'pass' => $pass)) и отправив его на user_save. См. http://api.drupal.org/api/function/user_save/6 для более подробной информации.

После создания учетной записи вы можете вызвать user_external_login, чтобы войти в нее (http://api.drupal.org/api/function/user_external_login/6)

person anschauung    schedule 31.08.2010
comment
Привет спасибо. Я создал учетную запись пользователя, и это сработало. Теперь проблема заключается в свойстве #action. Его вызывают вместо отправки (я смог создать учетную запись пользователя, удалив «#action» - просто тестирование, но в конце концов мне нужно вернуть его обратно). Таким образом, вместо «#submit» вызывается «#action». Могу ли я в любом случае изменить порядок, чтобы сначала вызывалось «#submit», а затем «#action»? Спасибо! - person berto77; 31.08.2010
comment
Вам нужно будет отредактировать страницу, на которой указывает #action, или переопределить #action своей собственной страницей, которая делает то же самое, но добавляет ваш собственный код. Какую форму вы пытаетесь изменить? Может есть более простой способ. - person anschauung; 31.08.2010
comment
Я пытаюсь изменить форму пожертвований. у него есть такой URL-адрес: donate/% (где % заменяется идентификатором узла человека, которому нужно сделать пожертвование). Таким образом, donate/20 — это пожертвование 20-му человеку. Это простая форма с полями: валюта и сумма. Я добавляю имя пользователя/пароль/имя/фамилию/адрес электронной почты... чтобы я мог собрать некоторую информацию о доноре. Я пытался поместить '#action' внутри '#submit', но это не сработало. Спасибо за вашу помощь. - person berto77; 31.08.2010