Mach das mit ner if Abfrage, dass die Zeilen nur im BE ignoriert werden. Im FE wird jetzt die Ausgabe fehlen.
Aber, ja, das sollte nicht das ursprüngliche Problem sein.
Sent from my iphone using Tapatalk
Druckbare Version
Mach das mit ner if Abfrage, dass die Zeilen nur im BE ignoriert werden. Im FE wird jetzt die Ausgabe fehlen.
Aber, ja, das sollte nicht das ursprüngliche Problem sein.
Sent from my iphone using Tapatalk
Hi,
ich habe bei einer Installation das selbe Problem, gibt es hier schon eine Lösung?
Grüße
Chris
Hi,
dieses hier:
Zitat:
Hallo Tim
Mit deiner Erweiterung funktioniert wahrscheinlich im Formulargenerator der Feld-Typ HTML, Erklärungen nicht mehr korrekt.
Siehe mal hier...
Wenn ich die Erweiterung deaktiviere funktioniert es wieder normal.
Grüsse
Steven
Kommst du mit der Lösung oben selbst ans Ziel?
Sent from my iphone using Tapatalk
Hallo Tim!
Muss diesen Fehler noch einmal aufgreifen. Er wurde hier bereits angesprochen - von brain1965 -, habe hier aber keinen
Lösungsansatz finden können.
Hintergrund ist:
Ich habe ein Teilnahmeformular anzulegen, über welches der Interessent zur Mitgliedergruppe "Teilnehmer"
hinzugefügt wird - also somit eine Registrierung erfolgt. Deshalb habe ich dem Registrierungsformular entsprechend zusätzliche Formularfelder hinzugefügt
- das macht ja Deine Erweiterung möglich -, indem ich das im Formulargenerator generierte Formular zugewiesen habe.
Wird das Formular im FE nun abgesendet erhalte ich diese Fehlermeldung:
Fatal error: Uncaught exception Exception with message Query error: Unknown column 'zusage' in 'field list' (INSERT INTO tl_member (zusage, begleitung, ... ETC.
Meine Vermutung:
Kann es sein, dass ich die Formularfelder nun zudem noch manuell in der Datenbank anlegen muss, eben wegen der Meldung "unknown column"?
Habe ich hier auch ein entsprechendes Template zuzuweisen?
Weitere Frage:
Berücksichtigt Deine Erweiterung auch das Formular-Element "Conditional Select Menu"? --- Wenn ja, WIE? Denn ausgegeben wurde es ohne die Ausklapp-Funktion nach Auswahl der Checkbox?
Dank Dir für die Hilfe!!!
Beste Grüße
Rüdiger
Welchen Feldtyp ist denn das Feld "zusage" ?
Good to know:
Nein, die nötigen Felder werden für die tl_member "on the fly" erstellt und nach der Aktion wieder gelöscht. Die festen Daten liegen in der tl_zextendedregistration_fields
Formularfeldtypen, die nicht Standard sind müssen ggf. ergänzt werden. Ein paar habe ich bereits in der Erweiterung selbst angelegt. Z.B. die vom efg.
Ein conditional select ist nicht dabei. Das müsstest du in einer kleinen Erweiterung ergänzen damit es innerhalb der zExtendedRegistration korrekt generiert wird.
Registrieren tust du deine neue Klassen auf dem herkömlichen Weg:
Hier die neue Klasse für den Typ HTML als Beispiel:
$GLOBALS['TL_FFL']['html'] = 'zFormHtml';
Schau da mal rein, das sollte selbsterklärend sein.
Um Felder vor der Generierung zu modifizieren kommt die Erweiterung mit einem HOOK:
$GLOBALS['TL_HOOKS']['zExtendedRegistration']['getFormFieldDCA']
Übermittelt werden :$fieldName,$fieldConf,$field,$objModule
Die Funktion erwartet einen Array für die Felddefinition zurück.
Vielen Dank für die zügige Antwort ...
aber ... schlau, wer dumm nachfragt, so wie ich jetzt, da ich bisher leidlich wenige Anpassungen/Erweiterungen als PHP-Greenhorn vorgenommen habe: :rolleyes:
Wo lege ich diese Formularfeltypen denn an?Zitat:
Formularfeldtypen, die nicht Standard sind müssen ggf. ergänzt werden. Ein paar habe ich bereits in der Erweiterung selbst angelegt. Z.B. die vom efg.
Und dieser Hook wird über die dca.config verarbeitet oder wo?Zitat:
Um Felder vor der Generierung zu modifizieren kommt die Erweiterung mit einem HOOK:
$GLOBALS['TL_HOOKS']['zExtendedRegistration']['getFormFieldDCA']
Welcher Typ ist den das Feld "zusage"?
Das sind neue Klassen, die Contao als neue Formularfeldtypen untergejubelt werden. :)Zitat:
Wo lege ich diese Formularfeltypen denn an?
Scahu mal in den Ordner der Erweiterung. Dort liegen ein paar z.B. die zFormHeadline. In der config.php der Erweiterung wird diese als neue Klasse für das Formularfeld HTML registriert (es überschreibt hier sogar das eigentliche Feld HTML)
In der Klasse selbst sollte man immer auf Vererbung setzen, dann musst du nur Änderungen ergänzen, die von der eigentlichen Funktionalität abweichen. Auch bleibt deine Klasse weniger anfällig bei Änderungen am Core.
Der Hook löst eine Callback Funktion innerhalb deiner beliebigen Klasse aus.
Siehe: http://contao.org/de/hooks.html
Vielen Dank, Tim!
Ich wurschtel mich mal zum Ziel ... :-)
Schöne Grüße
Rüdiger
Danke Tim für die tolle Extension. Die hat mir gerade eben wirklich viel Arbeit abgenommen. *thumbsUp*
Hallo zusammen
Ich habe mich in den letzten Tagen intensiv mit der Extension auseinandergesetzt. Erst mal danke an den Ersteller, das ist wirklich ziemlich umfangreich und nützlich.
Allerdings hatte ich das gleiche Problem, wie von brain beschrieben.
https://community.contao.org/de/show...l=1#post218356
Eine genauere Recherche hat dann folgenden Sachverhalt geliefert:
1. Die zugewiesenen Felder werden nicht in der Datenbanktabelle "tl_member" gespeichert (deshalb der "column not found" Fehler)
2. Beim Bearbeiten eines Mitgliedsdatensatzes im Backend - also reines Aufrufen der Seite - wird in der tl_member das entsprechende Feld angelegt, so dass das Speichern dann auch funktioniert
ABER: Es wird nie etwas in den beiden Tabellen "tl_zextendedregistration" und "tl_zextendedregistration_fields" gespeichert und das Feld auch nie mehr aus der "tl_member" gelöscht.
Wenn ich die Logik aber richtig verstanden habe, soll genau das passieren. Also die Speicherung der Daten in den "Hilfstabellen" und das lediglich temporäre Zwischenhalten der Felder in der "tl_member"
Wenn ich es richtig sehe müssten für das Speichern der Daten in den Hilfstabellen die beiden Funktionen "insertDatabase" und "updateDatabase" sorgen (in der dca/tl_member). Diese werden bei mir aber nie aufgerufen und ich verstehe auch nicht, wo das überhaupt im Code passieren soll.
Dadurch dass die Tabelle "tl_zextendedregistration" nie befüllt wird gerät dann die ganze Logik durcheinander.
Mir wäre sehr geholfen, wenn mir jemand einen Hinweis zu den beiden Funktionen "insertDatabase" und "updateDatabase" geben könnte oder mit sagt, ob ich einen generellen Verständnisfehler der Logik habe. Das Fixen würde ich dann gerne selbst übernehmen.
Danke schon mal im Voraus.
Meph
Willkommen im Forum! :)
Schön, dass Du an der Erweiterung mithelfen willst. Das ganze ist recht komplex aber im Grunde hast Du es richtig verstanden.
Das ist korrekt. Schöner wäre es in der tl_member, aber dann würden bei jedem Datenbankupdate oder Contao-Update die Spalten rausgeschmissen werden.Zitat:
1. Die zugewiesenen Felder werden nicht in der Datenbanktabelle "tl_member" gespeichert (deshalb der "column not found" Fehler)
Die Funktion zum Löschen der temp. Felder ist zur Zeit auskommentiert, weil sie bei jedem Seitenaufruf im BE getriggert wurde. Ich hatte da keinen schöneren Weg gefunden (ausser viell. einen Cronjob). Am Ende dachte ich mir "pfeif drauf, lass ich sie drin". :)
Korrekt, temporär wird ein entsprechendes Feld angelegt, aber der Wert und die Felddefinitionen werden in der 'tl_zextendedregistration' und die Felddef. in der 'tl_zextendedregistration_fields' abgelegt.Zitat:
2. Beim Bearbeiten eines Mitgliedsdatensatzes im Backend - also reines Aufrufen der Seite - wird in der tl_member das entsprechende Feld angelegt, so dass das Speichern dann auch funktioniert
Doch, in Zeile 436-437 (tl_member)Zitat:
Wenn ich es richtig sehe müssten für das Speichern der Daten in den Hilfstabellen die beiden Funktionen "insertDatabase" und "updateDatabase" sorgen (in der dca/tl_member). Diese werden bei mir aber nie aufgerufen und ich verstehe auch nicht, wo das überhaupt im Code passieren soll.
Die Funktionen werden dem temp. erstellten Feldern direkt zu geordnet.PHP-Code:
// handle database update via save/load callback
$fieldConf['save_callback'] = array(array('tl_member_zExtendedRegistration', 'saveCallback'));
$fieldConf['load_callback'] = array(array('tl_member_zExtendedRegistration', 'loadCallback'));
Das stimmt. Das sollte so nicht sein.Zitat:
Dadurch dass die Tabelle "tl_zextendedregistration" nie befüllt wird gerät dann die ganze Logik durcheinander.
Wäre gut, wenn Du GitHub dafür nutzen würdest. Dann haben alle was davon und ich könnte Änderungen direkt nachvollziehen und ggf. direkt übernehmen.Zitat:
Das Fixen würde ich dann gerne selbst übernehmen.
Dank Dir,
Tim
Hallo,
ich finde die Erweiterung super und sehr hilfreich. Leider bekomme ich sie in 3.1 nicht ans laufen.
Wenn ich das Install-Tool damit aufrufe erhalte ich folgende Fehlermeldung:
Wirst du die Erweiterung auch für 3.1 ans laufen bringen? Oder wird es nur für 2.11.6 funktionieren, wie es im Repository steht?Code:Fatal error: Uncaught exception Exception with message Query error: Table 'contao.tl_zextendedregistration_fields' doesn't exist (SELECT name FROM tl_zextendedregistration_fields) thrown in system/modules/core/library/Contao/Database/Statement.php on line 346
#0 system/modules/core/library/Contao/Database/Statement.php(261): Contao\Database\Statement->query()
#1 system/modules/zExtendedRegistration/dca/tl_member.php(514): Contao\Database\Statement->execute()
#2 system/modules/zExtendedRegistration/dca/tl_member.php(48): tl_member_zExtendedRegistration->dropTemporaryColumns()
#3 system/modules/core/library/Contao/Controller.php(2254): include('/fwapps/data/ht...')
#4 system/modules/core/library/Contao/DcaExtractor.php(291): Contao\Controller->loadDataContainer('tl_member')
#5 system/modules/core/library/Contao/DcaExtractor.php(114): Contao\DcaExtractor->createExtract()
#6 system/modules/core/library/Contao/Database/Installer.php(282): Contao\DcaExtractor->__construct('tl_member')
#7 system/modules/core/library/Contao/Database/Installer.php(106): Contao\Database\Installer->getFromDca()
#8 system/modules/core/library/Contao/Database/Installer.php(38): Contao\Database\Installer->compileCommands()
#9 contao/install.php(214): Contao\Database\Installer->generateSqlForm()
#10 contao/install.php(971): InstallTool->run()
#11 {main}
Danke für die Informationen!
Danke für die Zeilen.
Ist bekannt.
Vorerst wird es keine 3er Version geben.
Sent from my iphone using Tapatalk
Ok. Dann muss ich mir etwas anderes überlegen. Danke für die Info.