Also, falls jemanden diese Aufgabenstellung auch mal beschäftigt. Ich habe es nun so gemacht (irgendwie aufwändig und mit Abhängigkeiten, funktioniert aber bis jetzt zuverlässig)
1a) Das Formular holt sich per Select-Menu (DB) alle Titel aller Kurse. Ok. Aber wie teile ich dem Formular mit, dass es den Titel des angezeigten Kurses auch im Select-Menu (vor)auswählt? Gut, ich könnte per Javascript mir "von oben" den Titel holen und das Select manipulieren. Ist aber unschön.
Javscript geht, um eine Option aus einem Select auszuwählen. Einfacher wird es, wenn ich im Formulargenerator nur ein Text- oder Hidden-Input verwende und diesen per JS vorbelege.
1b) Eigentlich würde ich gerne anstatt ein Select-Menu (DB) ein Textfeld oder besser ein verstecktes vorausgefülltes Feld verwenden, aber wie kommt vom MM der Titel ins Formular?
Wohl die bessere Lösung ohne JS: Session. Dazu setze ich in die Contao Session (siehe Matthias) in einem modifizierten "mm_attr_select.html5" template (in meinem Projekt wird für jedes MM Item ein Formular per Alias ausgewählt) die Werte, die ich dann in dem Formulargenerator per inputvars Erweiterung beziehe.
PHP-Code:
// mm_attr_select.html5
$session = Session::getInstance();
$session->set('cl_mm_item_id', $this->row['id']);
$session->set('cl_mm_item_title', $this->row['title']);
// ...
echo "{{insert_form::$form_id}}";
session_destroy();
Dann beim Formulargenerator ein Verstecktes oder Text-Feld mit Standardwert:
2014-08-02_15_16_00_-_Formulargenerator_A_Das_Feld_ID_6_bearbeiten_-_Contao_Open_Source_CMS_3_3.png
Code:
{{session::cl_mm_item_title::specialchars}}
2) Wie bringe ich nun die Inhalte des tabletext Attributs in das Formular? Es ist ja nicht praktikabel alle Termine aller (!) Kurse in ein Select-Menu (DB) zu hauen, zudem verwendet tabletext mehrere Datenbanktabellen, um die Daten mit MMs zu verknüpfen. Ein checkbox/radio/select Menu mit den in diesem MM verfügbare tabeltext Werten wäre ja super. Nur wie gehts?
So jetzt wird es etwas trickreich. Man benötigt die inputvars und efg Erweiterung. Anstatt eines Select-Form Elementes, nimmt man Select-Menu (DB). Einstellung siehe Bild und als Bedingung folgendes, wobei man tl_metamodel_attribute.colname für das eigene Projekt natürlich anpassen muss. So wird alles aus der DB gezogen.
2014-08-02_15_07_22_-_Formulargenerator_Anmeldung-Single_Das_Feld_ID_7_bearbeiten_-_Contao_Open_.png
Code:
item_id = '{{session::cl_mm_item_id}}' AND att_id = (SELECT id FROM tl_metamodel_attribute where tl_metamodel_attribute.colname='timetable')