Wie kann ich das Benutzeranmeldeformular anpassen?

7

Ich versuche, das Benutzeranmeldeformular auf der /user/loginSeite anzupassen, und ich möchte eine hook_form_alterFunktion verwenden, um jedem Feld des Benutzeranmeldeformulars einen fantastischen Stil und Platzhalter hinzuzufügen und Folgendes zu entfernen oder auszublenden:
"Geben Sie Ihren Administrator- Benutzernamen ein" und "Geben Sie das zugehörige Kennwort ein Ihr Benutzername "Beschreibung Ausdrücke unter jedem Thema.
Um dieses Problem zu beheben, habe ich meinem ThemeName.theme den folgenden Code hinzugefügt :

function ThemeName_form_alter(&$form, $form_state, $form_id) {
  if ( $form['#form_id'] == 'user_login_form' ) {
    $form['actions']['submit']['#attributes']['class'][] = 'button glow button-primary expanded';
    $form['keys']['#attributes']['placeholder']['name'] = t('User name');
    $form['keys']['#attributes']['placeholder']['password'] = t('Password');
  }
}

Ich probiere viele verschiedene Möglichkeiten aus, aber ich kann kein Ergebnis erzielen. Zum Schluss möchte ich so etwas wie das folgende Bild erreichen:
Geben Sie hier die Bildbeschreibung ein

Ich habe diese Seiten gelesen, aber es scheint, dass in Drupal 8 keine funktioniert:
Wie ändere ich die Felder des Benutzerregistrierungsformulars und des Benutzeranmeldeformulars?
Ändern des Standard - Benutzerregistrierungsseite
anpassen Benutzer - Login - Block

Mojtaba Reyhani
quelle
2
Ich würde eine Vermutung riskieren, user-login-formdie user_login_formin Ihrer Funktion liegen sollte.
Mark Conroy
Warum nicht einfach mit CSS? .user-login-form .description { display: none; }
Mark Conroy
Die tatsächlichen Zeichenfolgen, die Sie entfernen möchten, befinden sich in UserLoginForm.php. Es ist hilfreich, diesen Code zu lesen, um zu sehen, wie das Formular aufgebaut ist.
Mark Conroy
Ich nehme an, Sie können ein Platzhalterattribut hinzufügen, wenn Sie das form_alter()Zeug machen
Mark Conroy
1
Sehen Sie, was Jeff Burnz in der Antwort unten gesagt hat.
Mark Conroy

Antworten:

10

Sie können Platzhalter in hook_form_alter () hinzufügen.

/**
 * Implements hook_form_alter().
 * @param $form
 * @param \Drupal\Core\Form\FormStateInterface $form_state
 * @param $form_id
 */
function ThemeName_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
  if ($form_id == 'user_login_form' ) {
    // Add placeholders.
    $form['name']['#attributes']['placeholder'] = t('User name');
    $form['pass']['#attributes']['placeholder'] = t('Password');
  }
}

Verwenden Sie die Funktionen des Entwicklungsmoduls , um das Formular mit kint auszudrucken. Auf diese Weise können Sie die gesamte Struktur des $ form-Arrays sichtbar sehen.

Jeff Burnz
quelle
Es scheint , dass User Namesein sollte Usernameoder User nameauf t () Funktion Arbeit ist richtig.
Mojtaba Reyhani
Das Problem liegt nicht in der Funktion, sondern in der Zeichenfolge innerhalb der Funktion. Ich habe das verwendet, was Sie verwendet haben, da ich davon ausgehen muss, dass Sie sich bei Ihren Übersetzungen auf diese Zeichenfolge verlassen können.
Jeff Burnz
1

https://www.drupal.org/project/simplelogin

Es ist ein einfaches Modul zum Anpassen von Drupal-Anmelde-, Kennwort- und Registrierungsseiten mit Hintergrundbildern.

Administratoren können Benutzern die Möglichkeit geben, ihre eigenen Hintergrundbilder / Hintergrundfarben an Benutzeranmeldungen, Kennwörter und Registrierungsseiten anzuhängen. Bessere Funktionen, einschließlich Anpassen der Hintergrundfarbe und Bildeinstellungen.

Features: Sauberes und schlankes Design, Anpassen der Hintergrundfarbe, Linkfarbe, Senden der Schaltflächenfarbe, Anpassen der Bildeinstellungen, Hintergrundbildopazität, Entfernen unerwünschter CSS-Dateien von Simplelogin-Seiten, Breite des Anmeldeseiten-Wrappers, Mobile Responsive,

Satheesh Kumar
quelle