[gelöst] Forms API: Invalid argument supplied for foreach() in form_select_options()
am 05.04.2013 - 15:20 Uhr in
Hallo zusammen,
ich schreibe gerade an einem Modul, in dem ich in mehreren Formularen immer wieder eine Liste der Wochentage benötige (für eine Auswahlliste). Da dachte ich mir, ich definiere am Anfang des Moduls mal das Array und kann dann im Forms-Array dieses immer wieder für die "options" nutzen:
$dayarray = array(
0 => t('No day'),
1 => t('Monday'),
2 => t('Tuesday'),
3 => t('Wednesday'),
4 => t('Thursday'),
5 => t('Friday'),
6 => t('Saturday'),
7 => t('Sunday'),
);
später dann im Forms Array:
$form['group_settings']['day'] = array(
'#type' => 'select',
'#title' => t('Day'),
'#options' => $dayarray,
'#default' => 0,
'#required' => TRUE,
);
In der Formular-Funktion habe ich zunächst global $dayarray;
geschrieben, aber jetzt bekomme ich trotzdem immer folgende Fehlermeldung und die Auswahlliste ist leer:
Warning: Invalid argument supplied for foreach() in form_select_options() (line 2674 of C:\wamp\www\drupal7\includes\form.inc).
Wenn ich das Array direkt in das Formular-Array schreibe, klappt das, aber ich dachte, es wäre doch ganz praktisch, das Array irgendwo zentral zu definieren und immer wieder die Variable zu verwenden. Wo ist da mein Denkfehler???
Viele Grüße,
Tobias
- Anmelden oder Registrieren um Kommentare zu schreiben
Helper function
am 06.04.2013 - 06:51 Uhr
Ich würde den Weg über eine helper function gehen. In dieser definierst Du die Optionen
<?php
function day_options() {
return array (
0 => t('No day'),
1 => t('Monday'),
2 => t('Tuesday'),
3 => t('Wednesday'),
4 => t('Thursday'),
5 => t('Friday'),
6 => t('Saturday'),
7 => t('Sunday'),
);
}
?>
und in der Form dann
<?php
$dayarray = day_options();
$form['group_settings']['day'] = array(
'#type' => 'select',
'#title' => t('Day'),
'#options' => $dayarray,
'#default' => 0,
'#required' => TRUE,
);
?>
super, danke, das hat
am 08.04.2013 - 11:28 Uhr
super, danke, das hat funktioniert