Re: Frage zu Chains und Hooks
Verfasst: Fr 23. Okt 2020, 14:03
Hallo Viktor,
Wenn man mit den cApi* Klassen einen neuen Datensatz anlegt, erstellt die GenericDB Klasse zuerst einen leeren Datensatz in der Datenbank. Da gibt es nur die ID, sonst keine weiteren Werte für die anderen Felder des Datensatzes, außer Default-Werte. Danach aktualisiert die GenericDB Klasse die Felder und speichert den Datensatz erneut.
Was also funktionieren würde, ist die Verwendung der Callback-Funktion für STORE_SUCCESS:
Einen Nachteil gibt es. Die Callback-Funktion für STORE_SUCCESS wird halt immer ausgeführt, wenn der Datensatz gespeichert wird. Aber hier kannst du prüfen, ob das Feld 'created', also $artLang->get('created') sehr nah oder identisch mit der aktuellen Zeit ist. So weißt du, dass der Datensatz aktualisiert wurde, kurz nach dem es erstellt wurde.
Eigentlich sollte man in CONTENIDO das Verhalten beim Erstellen von Datensätzen umstellen. Die jetzige Vorgehensweise hat vermutlich historische Gründe und ist nicht mehr zeitgemäß. Aber das ist ein anderes Thema...
ich habe mir nochmal die Stelle genauer angesehen. Die Callback-Funktion für CREATE_SUCCESS geht leider nicht, da es an der Art und Weise liegt, wie Datensätze in CONTENIDO per GenericDB angelegt werden.homtata hat geschrieben: ↑Fr 23. Okt 2020, 13:24...der vorgeschlagene Weg mit CREATE_SUCCESS funktioniert nicht. Offensichtlich bekomme ich zwar die (zukünftige) idartlang zurück damit, ABER der Artikel ist zum Zeitpunkt, wo der Callback abgearbeitet wird, noch gar nicht in der Datenbank angelegt..
Wenn man mit den cApi* Klassen einen neuen Datensatz anlegt, erstellt die GenericDB Klasse zuerst einen leeren Datensatz in der Datenbank. Da gibt es nur die ID, sonst keine weiteren Werte für die anderen Felder des Datensatzes, außer Default-Werte. Danach aktualisiert die GenericDB Klasse die Felder und speichert den Datensatz erneut.
Was also funktionieren würde, ist die Verwendung der Callback-Funktion für STORE_SUCCESS:
Code: Alles auswählen
cGenericDb::register(cGenericDb::STORE_SUCCESS, 'myNewArticleLanguageSucessCallback', 'cApiArticleLanguage');
Eigentlich sollte man in CONTENIDO das Verhalten beim Erstellen von Datensätzen umstellen. Die jetzige Vorgehensweise hat vermutlich historische Gründe und ist nicht mehr zeitgemäß. Aber das ist ein anderes Thema...