Ignora il modello del modulo di accesso dell'utente

Aug 18 2020

Sto cercando di personalizzare la mia pagina di accesso utente nel mio tema personalizzato utilizzando il file modello page--user--login.html.twig, ma ho problemi ad accedere ai diversi elementi del modulo. Tutti gli aspetti del modulo si trovano in page.content, ma vorrei modificare il contenuto che viene emesso.

Per un semplice esempio, il tema di base ha nome utente e password impilati verticalmente, dove mi piacerebbe regolarli per utilizzare bootstrap in modo che siano impilati orizzontalmente sullo schermo grande e verticalmente sul cellulare.

In Drupal 7, avevamo un formelemento nel file modello che mi consentiva di eseguire il rendering di determinati elementi del modulo separatamente, come:

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

Esiste un equivalente per Drupal 8?

Ho tentato di creare un file modello per il modulo ( form--user-login.html.twige form--user-login-form.html.twig) per vedere se potevo modificare il modello del modulo stesso invece della pagina in cui esiste il modulo, ma non ho avuto fortuna con quello.

Preferirei sovrascrivere il tema di accesso corrente invece di creare una pagina e un modulo completamente nuovi e dover aggiungere tutte le configurazioni necessarie in modo che un utente arrivi alla pagina di accesso corretta, ma devo ancora trovare un modo per farlo, grazie in anticipo.

Risposte

1 Yuseferi Aug 18 2020 at 19:05

se ignorato correttamente elementconterrà tutti gli elementi in 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>

se il modello non è valido, dovresti provare ad aggiungerlo.

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

quindi crea form--user-login-form.html.twignel tuo tema.

non dimenticare di svuotare la cache.