Select-Feld liefert keine Werte
![](https://www.drupalcenter.de/files/imagecache/upic_mini/pictures/picture-5538.jpg)
am 29.04.2009 - 12:09 Uhr in
Moin ihrs,
ich hab per Form-API ein Admin-Formular für ein Module erstellt. In diesem Formular wird auch ein Select-Feld definiert.
$item['quantity_per_card'] = array(
'#type' => 'select',
'#title' => t('Quantity per card'),
'#options' => drupal_map_assoc(array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)),
'#default_value' => 1,
'#value' => $game['quantity_per_card'],
'#description' => t('The number of copies for each card.'),
);
Mein Problem ist nun, das bei der Validierung für dieses Feld kein Wert im $form_state-Array angegeben ist. $form_state['values']['quantity_per_card'] selbst ist vorhanden, aber eben leer. In $_POST und in $form ist der Werte jedoch korrekt überliefert. Ich hab keine Idee warum das so ist. Kann mir da bitte jemand helfen?
Beste Grüße
djdops
- Anmelden oder Registrieren um Kommentare zu schreiben
#value
am 29.04.2009 - 12:46 Uhr
Nur so eine Idee: warum setzt Du '#value'? Somit hat das Feld *immer* den Wert, der in der Variable steht. Du möchtest wahrscheinlich
<?php
'#default_value' => $game['quantity_per_card'],
'#description' => t('The number of copies for each card.'),
?>
verwenden.
hth,
Stefan
--
2 Personen mit Halbwissen sind schlimmer als eine unwissende Person.
Nee, nee
am 04.05.2009 - 08:15 Uhr
Das Formular ist mit Werten aus der DB vorausgefüllt; es soll ein vorhandener Datensatz bearbeitet werden. Deswegen setze ich #value. Aber ob nun so oder so. Das Problem das in $form_state kein Wert für das Feld steht liegt immer noch vor.
Beste Grüße
djdops
Forms API
am 04.05.2009 - 08:24 Uhr
Moin!
Das Formular ist mit Werten aus der DB vorausgefüllt; es soll ein vorhandener Datensatz bearbeitet werden. Deswegen setze ich #value.
Was einfach falsch ist. Siehe FormsAPI.
#value
ist nur für "button, hidden, image_button, item, markup, submit, value" ein gültiges Attribut. Um ein Formularelement vorzubelegen, muss#default_value
verwendet werden.Ich zitier mal kurz aus der Doku:
The value of the form element that will be displayed or selected initially if the form has not been submitted yet. Should NOT be confused with #value, which is a hard-coded value the user cannot change!
Das Problem das in $form_state kein Wert für das Feld steht liegt immer noch vor.
Ich vermute mal, dass kommt weil sich der Wert nicht ändern kann, sondern fix ist (druch die Verwendung von
#value
).hth,
Stefan
--
2 Personen mit Halbwissen sind schlimmer als Einer, der gar nichts weiss.
Super!
am 04.05.2009 - 08:41 Uhr
Super, vielen Dank. Das hat das Problem behoben. Ich konnte zwar den von Dir geposteten Auszug von api.drupal.org nicht finden, dafür aber ähnliches. Ich sollte vielleicht wirklich mehr in der Doku lesen.
Beste Grüße
djdops