Ich stand schon öfters vor dem Problem, das bestimmte Module das Formular erst mit Process generieren.
Da #process aber später als hook_form_alter aufgerufen wird kann man nicht die Formularelemente ändern.
Ein gutes Beispiel ist das Profilfeld - Datum.
So will man vlt nur Datumse in der Vergangenheit im Profil anzeigen, ist ja logisch z.b. für einen Geburtstag.
Dafür gibt es einen Trick.
<?php
function your_form_alter(&$form, &$form_state, $form_id) {
$form['personal informations']['profile_birthday']['#process'][] = 'your_birthday_process';
}
function your_birthday_process(&$element) {
}
?>
Nun muss man in der process function das Element so verändern wie man es gerne haben möchte.
Hier ersetze ich z.B nur Jahre in der Vergangenheit ein<?php
function your_birthday_process(&$element) {
$element['year']['#options'] = drupal_map_assoc(range(1900, date('Y', time())));
return $element;
}
?>
Add new comment