Hallo,
mir sind gestern beim Arbeiten mit EFG einige Fehler aufgefallen, die ich hier gerne mal notiert hätte.
Fehler 1: wenn ich ein Formular anlege und es mit der Option einrichte, die Daten im Modul "Formular-Daten" speichern zu lassen, habe ich schlechte Karten, wenn ich mich später dazu entschließe, ein Feld umzubenennen.
Was passiert? Nehmen wir an, der Feldname heißt ursprünglich "Veranstaltung" und ist vom Typ "Textfeld". Nach einiger Zeit aber will ich aber, dass der Feldname "Events" heißen soll. Also ändere ich mittels Formulargenerator den Feldnamen des betroffenen Feldes. Im Frontend scheint alles wunderbar zu sein, ich trage meine Daten ein, klicke auf den "Submit"-Button - fertig. Ein Blick in die Formular-Daten zeigt aber, dass dort immer noch der alte Feldnamen vertreten ist, daher werden die Daten des neuen Feldnamens verworfen. Alle anderen unveränderten Felder werden normal gespeichert.
Fehler 2: lasse ich ein Textfeld auf ein Datum überprüfen, wird ein Unix-Timestamp eingetragen, was an sich richtig ist. Problematisch wird es aber, diesen anschließend im Backend in den Formulardaten zu lesen - weil dann eben der pure Unix-Timestamp zu sehen ist (z.B. 1419379200). Ähnliches Verhalten ist bei einer Uhrzeit zu beobachten - hier sehe ich die Anzahl der Sekunden seit Mitternacht (z.B. 08:00 wird so 28800). Die Prüfung ist an sich ein guter Gedanke, die Ausführung aber wenig hilfreich, wenn ich danach nicht mehr entschlüsseln kann, was eigentlich eingetragen wurde. Einzige Möglichkeit wäre, die Prüfung wieder wegzunehmen.
Fehler 3: wird ein Datum z.B. mit 24.12.2014 eingetragen, in den Einstellungen ist aber das Datumsformat "Y-m-d" eingestellt, wirft das eine Fehlermeldung aus:
Code:
Fatal error: Uncaught exception OutOfBoundsException with message Invalid date "24.12.2014" thrown in system/modules/core/library/Contao/Date.php on line 444
#0 system/modules/core/library/Contao/Date.php(89): Contao\Date->dateToUnix()
#1 system/modules/efg/classes/Formdata.php(906): Contao\Date->__construct('24.12.2014', 'Y-m-d')
#2 system/modules/efg/classes/FormdataProcessor.php(286): Efg\Formdata->preparePostValueForDatabase('24.12.2014', Array, NULL)
#3 system/modules/core/forms/Form.php(491): Efg\FormdataProcessor->processSubmittedData(Array, Array, Array, Array, Object(Efg\ExtendedForm))
#4 system/modules/core/forms/Form.php(225): Contao\Form->processFormData(Array, Array)
#5 system/modules/efg/forms/ExtendedForm.php(149): Contao\Form->compile()
#6 system/modules/core/classes/Hybrid.php(218): Efg\ExtendedForm->compile()
#7 system/modules/core/forms/Form.php(56): Contao\Hybrid->generate()
#8 system/modules/core/library/Contao/Controller.php(456): Contao\Form->generate()
#9 system/modules/core/modules/ModuleArticle.php(196): Contao\Controller->getContentElement(Object(Contao\ContentModel), 'main')
#10 system/modules/core/modules/Module.php(148): Contao\ModuleArticle->compile()
#11 system/modules/core/modules/ModuleArticle.php(59): Contao\Module->generate()
#12 system/modules/core/library/Contao/Controller.php(392): Contao\ModuleArticle->generate(false)
#13 system/modules/core/library/Contao/Controller.php(254): Contao\Controller->getArticle(Object(Contao\ArticleModel), false, false, 'main')
#14 system/modules/core/pages/PageRegular.php(138): Contao\Controller->getFrontendModule('0', 'main')
#15 index.php(253): Contao\PageRegular->generate(Object(Contao\PageModel), true)
#16 index.php(437): Index->run()
#17 {main}
Fehler 4: an sich kein wirklich Fehler, eher störend. Wird ein Pflichtfeld nicht korrekt ausgefüllt (z.B. Feld ausgelassen), wird richtigerweise eine Fehlermeldung angezeigt. Leider aber direkt beim Feld selbst, was das Layout des ganzen Formulars ziemlich zerstört. Gibt es eine Möglichkeit, den Errortext an anderer Stelle auftauchen zu lassen?
Eckdaten: Contao 3.2.13 mit EFG v2.2.1 Build 5. Wenn ich irgendwo Tickets dazu aufmachen soll, bitte ich um die Github-Adresse (oder ähnlichem).
Das war es mal fürs Erste. Ist mein erster Versuch ein Formular zu bauen, mit ein wenig YAML und Spaltensets wird sowas richtig schön.
Gruß, Thomas