Open alxndr-w opened 1 year ago
Kanns leider auch reproduzieren und ist unangenehm, weil man den Fehler leider nicht sofort findet. Hatte das Problem auch schon ein paar Mal, sobald man auf Datenänderung in Yform reagieren möchte.
Also so wie bei Alex -> wenn im Redaxo Backend im YForm Formular gespeichert wird, dann enthält oldData die ursprünglichen Daten. Wenn aber direkt über YOrm gespeichert, dann enthält oldData immer die aktuellen Daten, da das selbe Objekt verwendet wird, wo man bereits die Values über setValue gesetzt hat.
Somit ist oldData bei direkter YOrm Speicherung aktuell sinnlos, weil man doch nicht abfragen kann, ob sich die Werte geändert haben oder nicht.
/* @var rex_yform_manager_dataset|null $modelClass / $modelClass = rex_yform_manager_dataset::get($data_id, $table); if ($modelClass) { $modelClass->setValue('status', (int) $status); $modelClass->save(); }
https://github.com/yakamara/redaxo_yform/blob/1fad431332911e8921b3f3c213d382d2125247f1/plugins/manager/lib/yform/manager/dataset.php#L554
Ich habe einen EP, der wie folgt aufgebaut ist:
Dieser wird grundsätzlich erfolgreich getriggert, wenn der Datensatz sich ändert - egal, ob über das Table Manager Backend, oder per YOrm-Aufruf, gelöst über eine rex_api.
Wie zu entnehmen ist, möchte ich, dass eine Mail versendet wird, wenn der Status sich von 0 auf nicht-0 ändert. Das klappt auch über den Table Manager. Ich erhalte in $old_status den bisherigen Wert und anschließend den neu gespeicherten.
Hingegen über das direkte Speichern mit YOrm erhalte ich reproduzierbar sowohl als alten, als auch als neuen Wert denselben.
Ich speichere mit
$ticket->save()
das Ticket, der EP wird ordnungsgemäß aufgerufen.