Форма входа пользователя для Drupal построена функцией user_login
в user.module
с использованием Drupal Form API. Если вам необходимо настроить его, вы должны сделать это с помощью hook_form_alter() в модуле
function YOUR_MODULE_NAME_form_alter(&$form, &$form_state, $form_id) {
if ($form_id=='user_login') {
// YOUR CUSTOM CODE FOR THE FORM GOES HERE
}
}
** EDIT, на ваш комментарий **
Вам не нужно вызывать функцию YOUR_MODULE_NAME_form_alter()
: Drupal делает это для вас с помощью механизма hook каждый раз, когда ему нужно построить форму, и, когда $form_id=='user_login'
, он изменяет форму входа, чтобы разрешить вашу настройку. То, как Drupal делает это, подробно обсуждается на drupal.org, просто следуйте ссылке, которую я написал в начале этого ответа.
Форма Логин пользователя объявлен этот путь в user.module
:
// Display login form:
$form['name'] = array('#type' => 'textfield',
'#title' => t('Username'),
'#size' => 60,
'#maxlength' => USERNAME_MAX_LENGTH,
'#required' => TRUE,
);
$form['name']['#description'] = t('Enter your @s username.', array('@s' => variable_get('site_name', 'Drupal')));
$form['pass'] = array('#type' => 'password',
'#title' => t('Password'),
'#description' => t('Enter the password that accompanies your username.'),
'#required' => TRUE,
);
$form['#validate'] = user_login_default_validators();
$form['actions'] = array('#type' => 'actions');
$form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Log in'));
в $ форма массив передается по ссылке на ваш hook_form_alter()
перед тем, как оказывается, что позволяет для настройки. Итак, допустим, что вы хотите изменить метку текстового поля для имени пользователя от «Имени пользователя», чтобы «Имя пользователя», вы пишете
$form['name']['#title'] = t("Name of the User");
в пользовательском коде. Если вы хотите добавить еще одно поле в форме (текстовой, например), вы
$form['otherfield'] = array(
'#title' => t('My new custom textarea'),
'#type' => 'textarea',
'#description' => t("A description of what this area is for"),
'#cols' => 10,
'#rows' => 3,
'#weight' => 20,
);
и Drupal добавит поле в форме регистрации пользователя.
Существует много разных типов полей и свойств, которые вы можете настроить таким образом: я рекомендую вам полностью прочитать документацию API формы. Таким образом, вы позволяете Drupal заботиться о создании, переводе, рендеринге, проверке и представлении формы, а также при необходимости разрешать другим модулям манипулировать вашей формой.
Надеюсь, это ясно, хорошо провести время.
Что именно вы пытаетесь сделать? – pamatt
@pamatt: Я пытаюсь создать форму для входа для пользователей с именем пользователя и паролем и использовал указанную выше форму, но я хочу настроить структуру формы. Где я могу получить структуру формы, чтобы я мог ее настроить? – Ron