[gelöst] Custom Fields in der user_register_form ändern
Eingetragen von Fulgrim (25)
am 25.11.2012 - 00:02 Uhr in
am 25.11.2012 - 00:02 Uhr in
Hallo,
ich bin gerade dabei die User Registration zu bearbeiten und komme bei einer Sache nicht weiter.
Meine Form enthält 4 Felder
- Vorname
- Nachname
- Passwort
- Email
Ich möchte die Größe verändern und den Beschreibungstext anpassen. Dazu habe ich in meinem Modul folgendes geschrieben:
function meinmodul_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'user_register_form':
$form['account']['mail']['#description'] = t('');
$form['account']['pass']['#description'] = t('');
$form['account']['pass']['#size'] = '25';
$form['account']['mail']['#size'] = '25';
$form['field_vorname']['#size'] = '25';
);
unset($form['account']['current_pass']);
unset($form['account']['current_pass_required_values']);
$form['#validate'] = array_diff($form['#validate'], array('user_validate_current_pass'));
}
return $form;
}
Beim Passwort und der E-Mail funktionieren meine Änderungen ohne Probleme jedoch bei dem Feld Vorname bzw. Nachname leider nicht. Dort soll ebenfalls die Länge gekürzt sowie die Desciption entfernt werden. Kann mir dort jemand helfen?
Vielen Dank im voraus :-)
- Anmelden oder Registrieren um Kommentare zu schreiben
gelöst...
am 25.11.2012 - 00:25 Uhr
So Leute ich habe es bereits selbst gelöst :-)
Der Fehler war, dass es $form['field_vorname']['und'][0]['value']['#size'] = '25'; anstatt $form['field_vorname']['#size'] = '25'; heißen musste.
Und anstatt eine leere Übersetzung zu erstellen habe ich die Description jetzt über unset($form['field_vorname']['und'][0]['value']['#description']); rausgeschmissen.
unset
am 25.11.2012 - 12:40 Uhr
Noch ein Tipp: niemals (also nie!) Elemente eines Formulares entfernen, wenn Du Dir nicht 100%ig sicher bist, dass nicht ein anderes Modul (oder Drupal selbst) eventuell darauf später noch zugreifen will (z.B. "current_pass").
Verwende besser
<?php $form['account']['current_pass']['#access'] = FALSE; ?>
.Was soll
<?php $form['#validate'] = array_diff($form['#validate'], array('user_validate_current_pass')); ?>
bewirken?Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Danke für den Tipp!
am 25.11.2012 - 16:29 Uhr
Ich habe die entspechenden Zeilen geändert. Folgendes Snippet dient dazu unter user/edit das current password field zu deaktivieren
function MEINMODUL_form_alter(&$form, $form_state){
unset($form['account']['current_pass']);
unset($form['account']['current_pass_required_values']);
$form['#validate'] = array_diff($form['#validate'], array('user_validate_current_pass'));
}
Auf drupal.org gibt es dazu noch folgenden Beitrag http://drupal.org/project/nocurrent_pass
unset
am 26.11.2012 - 10:31 Uhr
Folgendes Snippet dient dazu unter user/edit das current password field zu deaktivieren
function MEINMODUL_form_alter(&$form, $form_state){
unset($form['account']['current_pass']);
unset($form['account']['current_pass_required_values']);
$form['#validate'] = array_diff($form['#validate'], array('user_validate_current_pass'));
}
Nein, damit entfernst Du das Feld komplett. Somit haben nachfolgende Module keine Möglichkeit mehr, darauf zuzugreifen.
Auf drupal.org gibt es dazu noch folgenden Beitrag http://drupal.org/project/nocurrent_pass
Auch dieses Modul verwendet
['#access'] = FALSE
und nichtunset()
.Tipp: Beachte die Verhaltensregeln des DrupalCenter.