Formelemente mit Process verändern

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