แทนที่เทมเพลตฟอร์มล็อกอินของผู้ใช้

Aug 18 2020

ฉันกำลังพยายามปรับแต่งหน้าเข้าสู่ระบบของผู้ใช้ในธีมที่กำหนดเองโดยใช้ไฟล์เทมเพลตpage--user--login.html.twigแต่มีปัญหาในการเข้าถึงองค์ประกอบฟอร์มอื่น ทุกส่วนของแบบฟอร์มมีอยู่page.contentแต่ฉันต้องการแก้ไขเนื้อหาที่ถูกส่งออก

ยกตัวอย่างง่ายๆธีมพื้นฐานมีชื่อผู้ใช้และรหัสผ่านซ้อนกันในแนวตั้งซึ่งฉันต้องการปรับให้ใช้ bootstrap เพื่อให้ซ้อนกันในแนวนอนบนหน้าจอขนาดใหญ่และในแนวตั้งบนมือถือ

ใน 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

ถ้าคุณ overrided อย่างถูกต้อง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ในธีมของคุณ

อย่าลืมล้างแคช