Feature #5456
closedTWIG als Template Engine fuer Report Syntax
0%
Files
Updated by Benjamin Baer almost 6 years ago
- Target version changed from 55 to 18.10.3
Updated by Carsten Rose over 5 years ago
- Assignee changed from Nicola Chiapolini to Elias Villiger
Updated by Carsten Rose over 5 years ago
- File qfq-record.txt qfq-record.txt added
- File result.png result.png added
- File test.html.twig test.html.twig added
- File twig.patch twig.patch added
Anyway, die Anhänge: * twig.patch: Die nötigen Änderungen am QFQ-Source * test.html.twig: Das verwendete Template file * qfq-record.txt: Der Inhalt des QFQ-Record auf der Test-Seite * result.png: Screenshot des Resultats
Zusätzliche Voraussetzung: Twig muss natürlich installiert sein (Paket `php-
twig` in Debian stable).
Finde das sieht schon sehr vielversprechend aus... Was noch fehlt sind
natürlich die UnitTests und die Doku
härzlichi Grüäss und es schöns Wuchenend
Nicola
Updated by Elias Villiger over 5 years ago
- Die einzelnen Felder (row.firstname, row.name, row.link|qfqlink, ...) müssten pro Template jeweils einzeln aufgelistet werden (? - jedenfalls im Fall von speziellen Spalten wie AS _link)
- Spezielle Spalten wie _Pagee oder versteckte Spalten AS _hidden müssten vermutlich auch einzeln gehandhabt werden (wie qfqLink für AS _link) - je nach angebotener Funktionalität könnte das schnell kompliziert werden.
Die Idee des Templatings finde ich aber sehr attraktiv, da man so einiges an repetitivem Tippen einsparen könnte. Mein Vorschlag wäre, ein QFQ-eigenes Templating anzubieten:
10 { sql = SELECT * FROM person template = fileadmin/qfqTemplates/standardTable }
Der User kann dann entsprechende Templates abspeichern, welche in QFQ-Notation gehalten sind, z.B.
head = <table class="table"> tail = </table> rbeg = <tr> rend = </tr> fbeg = <td> fend = </td>
Bequem wäre auch, wenn man einzelne Felder des Templates überschreiben könnte (Template wird zuerst eingelesen, dann mit zusätzlichen angegebenen Feldern überschrieben):
20 { sql = SELECT * FROM person template = fileadmin/qfqTemplates/standardTable head = <table class="table table-condensed"><tr><th>Id</th><th>Name</th><th>E-Mail</th></tr> }
Updated by Nicola Chiapolini over 5 years ago
Bei Gebrauch von Twig würde ev. die Generalisierung von QFQ etwas verloren gehen [...]
Korrekt. Aber das ist ja auch ein Stück weit die Idee. Ziel von Template-Engines ist üblicherweise Darstellung von Datenzugriff zu trennen. (d.h. das SQL-Query sollte keine Info zur Darstellung enthalten)
(Aber es wäre natürlich nicht besonders schwierig Templates zu erstellen, die die Darstellung vom Spaltennamen abhängig machen.)
Mein Vorschlag wäre, ein QFQ-eigenes Templating anzubieten
Davon würde ich dringend abraten. Wenn immer möglich sollten wir auf bestehende und etablierte Tools zurückgreifen. (und im Dekanat werden definitiv weiter mit Twig arbeiten, das hat sich bei uns bereits sehr bewährt. Nötigenfalls werden wir das also auch weiterhin selbst reinpatchen)
Falls du konkrete, komplexere Template-Beispiele möchtest, einfach melden.
Bequem wäre auch, wenn man einzelne Felder des Templates überschreiben könnte
Twig bietet die Möglichkeit aus einem Template andere Teil-Templates zu laden. Das ist aber in meinem QFQ-Code noch nicht richtig integriert.
Updated by Elias Villiger over 5 years ago
- Assignee changed from Elias Villiger to Carsten Rose
Updated by Elias Villiger over 5 years ago
Macht Sinn. Ich dachte, es ginge vor allem darum, den Boilerplate von head/tail/rbeg/... zu reduzieren, aber wenn es um eine Trennung von Design und SQL-Code geht, macht Twig schon Sinn.
Das oben beschriebene "QFQ-eigene Templating" wäre auch nicht wirklich ein "Templating" in dem Sinne, sondern eher ein Auslagern häufiger Darstellungsoptionen zur Wiederverwendung.
Für eigenen meinen Gebrauch von QFQ (geolean) sehe ich keine grossen Anwendungen für Templating im Sinn von Twig; aber da es sich bei euch bewährt, würde mir ein Einblick in euren Umgang damit bestimmt weitere Perspektiven zeigen.
Ich habe das Ticket jetzt wieder Carsten zugewiesen, dann können wir nach seinen Ferien weiterschauen.
Updated by Nicola Chiapolini over 5 years ago
- File display_committee.txt display_committee.txt added
- File display_state.txt display_state.txt added
- File screenshot.png screenshot.png added
Hier noch zwei komplexere Beispiele für den Einsatz von Twig. (display_committee.txt, display_state.txt und screenshot.png)
Updated by Carsten Rose over 5 years ago
- Target version changed from 18.10.3 to 18.12.1
Updated by Carsten Rose over 5 years ago
- Target version changed from 18.12.1 to 141
Updated by Marc Egger almost 5 years ago
- Assignee changed from Carsten Rose to Marc Egger
- Priority changed from High to Normal
Updated by Carsten Rose over 4 years ago
- Target version changed from 141 to next6
Updated by Carsten Rose over 4 years ago
- Due date changed from 19.06.2019 to 26.07.2019
Updated by Carsten Rose over 4 years ago
- Target version changed from next6 to 19.7.1