Kullanıcı giriş formu şablonunu geçersiz kıl

Aug 18 2020

Şablon dosyasını kullanarak özel temamdaki kullanıcı oturum açma sayfamı özelleştirmeye çalışıyorum page--user--login.html.twig, ancak farklı form öğelerine erişmede sorun yaşıyorum. Formun tüm yönleri içinde bulunur page.content, ancak çıktısı alınan içeriği düzenlemek istiyorum.

Basit bir örnek vermek gerekirse, temel temanın Kullanıcı Adı ve Parolası dikey olarak yığılmış, burada bunu önyükleme kullanmak için ayarlamak istiyorum, böylece bunlar büyük ekranda yatay olarak ve mobil cihazda dikey olarak istiflenecek.

Drupal 7'de, formşablon dosyasında belirli form öğelerini ayrı ayrı oluşturmama izin veren bir öğe vardı , örneğin:

<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 için bir eşdeğeri var mı?

Formun bulunduğu sayfa yerine form şablonunu değiştirip değiştiremeyeceğimi görmek için form ( form--user-login.html.twigve form--user-login-form.html.twig) için bir şablon dosyası oluşturmaya çalıştım, ancak bu konuda hiç şansım olmadı.

Tamamen yeni bir sayfa ve form oluşturmak yerine mevcut giriş temasını geçersiz kılmayı tercih ederim ve bir kullanıcının doğru giriş sayfasına gelebilmesi için gerekli tüm yapılandırmaları eklemem gerekir, ancak henüz bunu yapmanın bir yolunu bulamamıştır. önceden.

Yanıtlar

1 Yuseferi Aug 18 2020 at 19:05

Doğru overrided eğer elementtüm öğeleri içerecek 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>

şablon geçerli değilse, eklemeyi denemelisiniz.

function Yourtheme_theme_suggestions_alter(array &$suggestions, array $variables, $hook) { if ($hook == 'form' & !empty($variables['element']['#id'])) { $suggestions[] = 'form__' . str_replace('-', '_', $variables['element']['#id']);
  }
}

daha sonra temanızda oluşturun form--user-login-form.html.twig.

önbelleği temizlemeyi unutmayın.