Как изменить входные данные формы входа пользователя drupal8 и проверку?

#drupal-modules #drupal-8

#drupal-модули #drupal-8

Вопрос:

Я хочу подключить и записать для страницы моей учетной записи. поэтому, пожалуйста, предоставьте мне примерный пример или процедуру для написания модуля изменения формы подключения с файлом info и файлом модуля для drupal8.

Комментарии:

1. что вы хотите изменить? прежде чем делать это, знаете ли вы, что можете добавлять поля и многое другое в учетную запись с помощью бэк-офиса? /admin/config/people/accounts/поля

2. измените имя формы, например, адрес электронной почты, на Email. пример страницы пользователя / входа в систему: имя пользователя и пароль, но я хочу изменить имя пользователя или адрес электронной почты и пароль. Мне нужен пример кода hook. информация и хук.модуль

Ответ №1:

просто скопируйте и вставьте standard .info для создания модуля

в вашем .module добавьте форму hook alter

  /**
* callback action on submit (custom method plus bas)
*
* @param $form
* @param DrupalCoreFormFormStateInterface $form_state
* @param $form_id
*/
  function yourModuleName_form_alter(amp;$form, DrupalCoreFormFormStateInterface $form_state, $form_id) {


if ($form_id == 'user_login_form') {

    //code to modify your form input

    $form['actions']['submit']['#submit'][] = 'custom_submit_method';

   //do something similar to create a custom validation handler

}

}

/**
 * @param $form
 * @param DrupalCoreFormFormStateInterface $form_state
 * @param $form_id
 */
function custom_submit_method(amp;$form, DrupalCoreFormFormStateInterface $form_state, $form_id) {

    //code to modify the submit if needed

 }
  

Комментарии:

1. Спасибо, я получил ответ. Но я использовал в качестве модуля имя_формы_user_login_form_alter и применил заполнитель атрибутов $form[‘name’][‘#attributes’][‘placeholder’] = t(‘имя пользователя или электронная почта’); . Я хочу больше потренироваться для изменения заголовка и пользовательской отправки. Если что-то столкнется с проблемой, я прокомментирую. Почему вы используете block_generator_form_alter.

2. я отредактировал ответ, генератор блоков был частью имени, которое я дал своему модулю

3. да, эта пользовательская функция отправки работает нормально, но как получить значения post в этой функции. Я использовал подобное ($ cuser = $form_state [‘значения’][‘имя’]), но это не работает.

4. $form_state->GetValue(‘name_of_your_value’))

5. Я получаю значение, но при использовании hook_user_login ($cuser, $ cpass) просто в качестве входных данных (admin, администратор) он не входит в систему. Не предложите мне идеи в этом hooks