Заменить шаблон формы входа пользователя

Aug 18 2020

Я пытаюсь настроить свою страницу входа в систему в своей пользовательской теме с помощью файла шаблона 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), чтобы посмотреть, могу ли я изменить сам шаблон формы, а не страницу, на которой существует форма, но мне это не удалось.

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

Ответы

1 Yuseferi Aug 18 2020 at 19:05

если вы правильно переопределили, 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в своей теме.

не забываем очистить кеш.