Заменить шаблон формы входа пользователя
Я пытаюсь настроить свою страницу входа в систему в своей пользовательской теме с помощью файла шаблона page--user--login.html.twig
, но у меня возникают проблемы с доступом к различным элементам формы. Все аспекты формы находятся внутри page.content
, но я хотел бы отредактировать выводимый контент.
В качестве простого примера, базовая тема имеет имя пользователя и пароль, расположенные вертикально, и я бы хотел настроить это для использования начальной загрузки, чтобы они располагались горизонтально на большом экране и вертикально на мобильном устройстве.
В Drupal 7 у нас был form
элемент в файле шаблона, который позволял мне отображать определенные элементы формы отдельно, например:
<div class="col-sm-12 col-lg-6">
<?php print drupal_render($form['name']); ?> </div> <div class="col-sm-12 col-lg-6"> <?php print drupal_render($form['pass']); ?>
</div>
Есть ли аналог для Drupal 8?
Я попытался создать файл шаблона для формы ( form--user-login.html.twig
и form--user-login-form.html.twig
), чтобы посмотреть, могу ли я изменить сам шаблон формы, а не страницу, на которой существует форма, но мне это не удалось.
Я бы предпочел переопределить текущую тему входа в систему вместо создания полностью новой страницы и формы и мне пришлось бы добавить все необходимые конфигурации, чтобы пользователь попал на правильную страницу входа, но еще не нашел способа сделать это, спасибо заблаговременно.
Ответы
если вы правильно переопределили, element
будет содержать все элементы form--user-login.html.twig
,
<div class="login-form login-form__wrapper">
<form{{ attributes }}>
<div class="login-form__top">
<h3>hello world</h3>
<div id="error_messages"></div>
{{ element.messages }}
{{ element.name }} {# username element #}
{{ element.pass }} {# password element #}
<div class="login-form__help_actions">
<input id="show_password" class="show_password" type="checkbox" />
<label class="password-toggle" for="show_password">Show password</label>
<a href="/user/password" class="forgot-password">Forgot Password?</a>
</div>
{{ element.form_build_id }} {# required #}
{{ element.form_id }} {# required #}
<div class="login-form__submit">
{{ element.actions.submit }}
</div>
</div>
</form>
</div>
если шаблон недействителен, попробуйте его добавить.
function Yourtheme_theme_suggestions_alter(array &$suggestions, array $variables, $hook) { if ($hook == 'form' & !empty($variables['element']['#id'])) { $suggestions[] = 'form__' . str_replace('-', '_', $variables['element']['#id']);
}
}
затем создайте form--user-login-form.html.twig
в своей теме.
не забываем очистить кеш.