Hallo!
Mit dieser Frage komme ich leider nicht abschließend weiter. Den auftretenden Fehler konnte ich lösen, indem ich im OnDelete-Callback den Eintrag in tl_undo ändere und statt dem NULL-Wert das reinschreibe, was auch der Label-Callback für das Feld liefert.
Nun wird mein Datensatz korrekt gelöscht und lässt sich auch wiederherstellen. Das Problem ist aber, dass zwar der Datensatz wiederhergestellt wird, jedoch nicht die Contao-Haste Relationen. Die werden zwar als JSON korrekt im haste_data Feld von tl_undo gespeichert, dann aber beim Wiederherstellen nicht ausgewertet.
Meine Frage ist nun, wie ich das selbst machen kann? In der Doku von Contao-Haste wird von einem Event-Listener gesprochen. Aber welcher und wie komme ich da ran? Es gibt dieses Beispiel:
Das wird bei mir aber nicht aufgerufen.PHP-Code:use Codefog\HasteBundle\Event\UndoEvent;
use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
#[AsEventListener]
class MyListener
{
public function __invoke(UndoEvent $event)
{
// … do your magic …
}
}
Ansonsten finde ich nur config.onundo aber der wird ja erst nach dem Wiederherstellen aufgerufen und es wird keine Undo-ID übermittelt. Daher kann ich den Callback nicht nutzen, da ich nicht mehr an den Datensatz aus tl_undo rankomme.
Vielleicht habe ich auch grundsätzlich einen Denkfehler und verstehe das Konzept nicht. Mir scheint es aber so, dass der UndoManager von Contao-Haste zwar beim Löschen aufgerufen wird, jedoch nicht bei der Wiederherstellung. Wäre super, wenn mir da jemand weiterhelfen könnte.
Gruß


Zitieren