Leider konnte ich durch keinen der beschriebenen Wege meine gewünschte Funktionalität realisieren. Ich möchte hier nun meinen Lösungsweg beschreiben, falls andere Entwickler einmal vor dem selben Problem stehen.
In meinem Template iteriere ich durch alle aus der Datenbank erhaltenen Seminare und schreibe die jeweiligen IDs in das value-Attribute eines input-Elements, welches ich versteckt im DOM-Baum platziere.
HTML-Code:
<?php foreach ($this->seminare as $seminar): ?>
<input type="text" name="SeminarId" hidden value="<?php echo $seminar['id']; ?>" />
<?php endforeach; ?>
Daraufhin erzeuge ich das notwendige HTML, welches jeweils ein Seminar repräsentiert.
HTML-Code:
<?php foreach ($this->seminare as $seminar): ?>
<div class="seminarDiv">
<div class="seminarDivHeader">
<p>
<?php echo $seminar['Titel']; ?>
</p>
<br>
<p>
<?php
$dateValues = date("d.m.Y", $seminar['Beginn']) . " - "
. date("d.m.Y", $seminar['Ende']);
echo $dateValues;
?>
</p>
<p>
<?php echo $seminar['Standort']; ?>
</p>
</div>
<div class="seminarDivBody">
{{insert_form::1}}
</div>
</div>
<?php endforeach; ?>
Innerhalb des Seminars wird über einen Inserttag das notwendige Formular zur Anmeldung eingefügt.
HTML-Code:
<div class="ce_form tableless block">
<form id="f3" method="post" enctype="application/x-www-form-urlencoded" class="fullWidth">
<div class="formbody">
<input type="hidden" name="FORM_SUBMIT" value="auto_form_3">
<input type="hidden" name="REQUEST_TOKEN" value="aab232ddb42ba8a4fa991fff672ae994">
<input type="hidden" name="Seminar" value="0">
<div class="widget widget-text fullWidth marginTop mandatory">
<input type="text" name="Vorname" id="ctrl_11" class="text fullWidth marginTop mandatory" value="" required="" placeholder="Bitte geben Sie den Vornamen der anzumeldenden Person ein" maxlength="50">
</div>
<div class="widget widget-text fullWidth marginTop mandatory">
<input type="text" name="Nachname" id="ctrl_12" class="text fullWidth marginTop mandatory" value="" required="" placeholder="Bitte geben Sie den Nachnamen der anzumeldenden Person ein" maxlength="50" tabindex="1">
</div>
<div class="widget widget-text fullWidth marginTop mandatory">
<input type="email" name="Mail" id="ctrl_13" class="text fullWidth marginTop mandatory" value="" required="" placeholder="Bitte geben Sie eine Mail-Adresse für Rückfragen an" maxlength="100">
</div>
<div class="submit_container marginTop marginBottom">
<input type="submit" id="ctrl_15" class="submit marginTop marginBottom" value="Anmelden">
</div>
</div>
</form>
</div>
Nun extrahiert folgendes Skript die IDs aus den zuvor angelegten versteckten input-Elementen und schreibt diese Werte jeweils in das value-Attribute des versteckte Feldes des Formulars, welches die Id des jeweiligen Seminars enthalten soll.
HTML-Code:
<script>
var seminarIds = document.getElementsByName("SeminarId");
var seminarInputFields = document.getElementsByName("Seminar");
for (var i = 0; i < seminarInputFields.length; i++) {
seminarInputFields[i].value = seminarIds[i].value;
}
</script>
Mit diesem Lösungsweg kann ich jedem erzeugten Formular seine Id zuweisen, wodurch meine Problemstellung gelöst ist. Ich hoffe ich kann durch diese Anleitung jemand anderst viel Zeit und Nerven ersparen
Lesezeichen