사용자 로그인 양식 템플릿 무시

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.twigform--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테마에서 만듭니다 .

캐시를 지우는 것을 잊지 마십시오.