Hallo Christian,
im Folgenden das versprochene lauffähige Beispiel.
Der Link zum exportierten Formular steht ganz am Ende.
Das Beispiel:
Das Beispiel setzt 3 verschiedene Möglichkeiten der Darstellungen der Formular-Daten im PDF-Template um.
Jede der drei Möglichkeit arbeitet jeweils mit einem anderen HTML-Element.
- Freier Text mit <p>-Elementen.
- Horizontale Daten-Tabelle mit <td>-Elementen.
- Vertikale Daten-Tabelle mit <tr>-Elementen.
Das Formular hat folgende 5 Felder:
- radio-1: Radio-Button mit 3 Optionen, schalltet die Sichtbarkeit der Felder text-1, text-2, text-3.
- text-1: Textfeld, sichtbar nur bei gewählter Option Label 'label-1' mit Wert '1' in Feld radio-1.
- text-2: Textfeld, sichtbar nur bei gewählter Option Label 'label-2' mit Wert '2' in Feld radio-2.
- text-3: Textfeld, sichtbar nur bei gewählter Option Label 'label-3' mit Wert '3' in Feld radio-3.
- select-1: Listbox, Zusatz ohne weitere technische Bedeutung.
- date-1: Datums-Feld, Zusatz ohne weitere technische Bedeutung.
Das Formular im Frontend:
-
vi-solutions.de/forum-uploads/radio-sele...form-select-0-de.png
-
vi-solutions.de/forum-uploads/radio-sele...form-select-1-de.png
-
vi-solutions.de/forum-uploads/radio-sele...form-select-2-de.png
-
vi-solutions.de/forum-uploads/radio-sele...form-select-3-de.png
Das fertige PDF-Dokument:
Das fertige PDF-Dokument für 3 Datensätze von 3 Formular-Absendungen.
Das PDF-Dokument wurde im Backend aus der PDF-Konfiguration heraus erzeugt:
vi-solutions.de/forum-uploads/radio-select-pdf-de.pdf
Die PDF-Template-Konfiguration, Reiter 'Dokument':
vi-solutions.de/forum-uploads/radio-sele...ment-complete-de.png
Die PDF-Template-Konfiguration, Reiter 'SQL Statements':
vi-solutions.de/forum-uploads/radio-sele...ql-statements-de.png
Die Lösung kurz:
Die Lösung wertet die Anzeige-Bedingungen in einem SQL-Statement aus.
Es gibt pro Anzeige-Bedingung je ein SQL-Statement.
Die Lösung lang:
Du setzt die bedingten Feld-Platzhalter in je ein eigenes HTML-Element.
Jedes HTML-Element bindest du an ein SQL-Satement (3 Optionen --> 3 SQL-Statements).
Das gebundene SQL-Satement liefert 1 Datensatz für den Fall, das die Bedingung zutrifft.
Liefert das SQL-Statement 1 Datensatz, dann wird das gebundene HTML-Element angezeigt.
Das gebundene SQL-Satement liefert keinen Datensatz für den Fall, das die Bedingung nicht zutrifft.
Liefert das SQL-Statement keinen Datensatz, dann wird das gebundene HTML-Element nicht angezeigt.
Beispiel-Code (Ausschnitt) HTML für die vertikale Daten-Tabelle mit <tr>-Elementen:
Code:
<tr id="sql-1" class="sql" style="background-color: powderblue;">
<td colspan="1" align="left">text-1</td>
<td colspan="1" align="left">${text-1}</td>
</tr>
<tr id="sql-2" class="sql" style="background-color: powderblue;">
<td colspan="1" align="left">text-2</td>
<td colspan="1" align="left">${text-2}</td>
</tr>
<tr id="sql-3" class="sql" style="background-color: powderblue;">
<td colspan="1" align="left">text-3</td>
<td colspan="1" align="left">${text-3}</td>
</tr>
Beispiel-Code der 3 SQL-Statements:
SQL-Statement 'sql-1':
Code:
select 1 from #__visforms_1 where F1 = 1 and id = ${item:id};
SQL-Statement 'sql-2':
Code:
select 1 from #__visforms_1 where F1 = 2 and id = ${item:id};
SQL-Statement 'sql-3':
Code:
select 1 from #__visforms_1 where F1 = 3 and id = ${item:id};
Informationen des Benutzers:
Als Zusatz werden im PDF-Dokument Informationen des Benutzers angezeigt.
SQL-Statement 'user-data':
Code:
select name, username, email from #__users where id = ${item:created_by};
HTML-Code:
Code:
<p id="user-data" class="sql" style="background-color: seashell;">Formular abgesendet von:<br><strong>Name</strong> = ${user-data:name}<br><strong>Benutzername</strong> = ${user-data:username}<br><strong>E-Mail</strong> = ${user-data:email}</p>
Das exportierte Formular mit Daten und PDF-Template (radio-select-pdf-de):
vi-solutions.de/forum-uploads/form120241216-131424.json
Achtung Benutzer-IDs der importierten Formular-Daten:
Wenn du das exportierte Formular mit Daten nutzt, müssen nach dem Import des Formulars bei dir in den Formular-Daten die Benutzer-IDs an deine Benutzer-IDs angepasst werden (Daten-Tabellen-Feld 'created_by').
Stimmen die Benutzer-IDs der importierten Formular-Daten mit keinem Benutzer deiner Joomla-Instanz überein, wird der Teil im PDF-Template mit den Benutzer-Daten nicht gedruckt.
Der Teil im PDF-Template mit den Benutzer-Daten wird aus dem gleichen Grund nicht gedruckt, wie die HTML-Elemente für nicht gewählten Optionen: Es wird dann kein Datensatz geliefert.
Liebe Grüße, Ingmar