Formular in Tabelle
am 24.02.2008 - 00:12 Uhr in
Servus!
Ich bin hier ziemlich neu mit Drupal unterwegs und versuche gerade, eine kleine Bestelldatenbank zu implementieren. Wenn man sich mit der API einmal angefreundet hat, geht das recht gut.
Nur bei einem Problem komme ich nicht weiter: Ein Formular in einer Tabelle.
Ein Formular normal zu rendern (drupal_get_form) ist harmlos, nur mit Tabellen bekomme ich es nicht hin.
Schließlich soll die Tabelle aus der DB gerendert werden (radios in jeder Zeile, unter der Tabelle ein Submit-Button).
Folgendes Beispiel zeigt mit zwar 2 Buttons, aber die Formulardefinition () fehlt, d.h. es tut sich nichts.
$headers = array(
array('data' => t("A")),
array('data' => t("B")),
);
$form[1]['submit'] = array (
'#type' => 'submit',
'#value' => t('Zeile 1'),
);
$form[2]['submit'] = array (
'#type' => 'submit',
'#value' => t('Zeile 2'),
);
$items[0] = array(
array('data' => 'a'),
array('data' => drupal_render($form[1])),
);
$items[1] = array(
array('data' => 'b'),
array('data' => drupal_render($form[2])),
);
return theme('table', $headers, $items);
Wenn ich statt einem Submit-Button ein anderes Element verwende, kommt folgender Fehler
warning: implode() [function.implode]: Bad arguments. in C:\Programme\xampplite\htdocs\drupal\includes\form.inc on line 622.
Auf drupal.org habe ich etwas mit #parent bzw. #tree gefunden, kann damit aber nichts anfangen.
Bitte um Ideen!
Danke!
Grüße, Stefan
- Anmelden oder Registrieren um Kommentare zu schreiben
Mach eine eigene Funktion
am 24.02.2008 - 16:42 Uhr
Mach eine eigene Funktion für das Formular und ruf diese Funktion mit drupal_get_form auf.
-----------------------------------
Drupal Ruhrgebiet Usergroup
http://groups.drupal.org/ruhrgebiet
Servus!
am 26.02.2008 - 00:46 Uhr
Servus!
Ja, so funktioniert das. Danke!
Andere Frage noch:
Warum muss ich beim Rendern die Form doppelt rendern?
$output = theme('table', $header, $rows);
$output .= drupal_render($form);
Die einzelnen Tabellenteile werden im Array $rows ja schon einzeln mit
drupal_render($element[$v_part_id]),
gerendert?
Lasse ich die Zeile drupal_render($form), dann greift die _submit()-Funktion nicht. Mit dem doppelten Rendern werden allerdings die Formularelemente doppelt angezeigt, das macht Probleme bei Selectboxes (gleicher Name, gleiche Werte).
Wo liegt da der Fehler begraben?
Danke!
Grüße, Stefan
also eigentlich wenn man
am 28.02.2008 - 18:30 Uhr
also eigentlich wenn man drupal_render($form['xyz']); ausruft wird das aus dem $form array rausgenommen und kann so nicht doppelt gerendert werden
du kannst ja mal deinen Code posten
--------------
Mein Blog: www.freeblogger.org
Deutscher IRC-Channel: irc.freenode.net #drupal.de je mehr desto besser
... Jabber-me: dereine@jabber.ccc.de Warum Jabber?
Servus! Danke für den Tipp,
am 04.03.2008 - 17:07 Uhr
Servus!
Danke für den Tipp, hab in der foreach-Schleife für jedes Element ein unset($form[$key]) gemacht!
Grüße, Stefan