You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
<?phpclass rex_api_dance_event_ticket extends rex_api_function
{
protected$published = true;
publicfunctionexecute()
{
rex_response::cleanOutputBuffers();
$api_key = rex_request('api_key', 'string', "");
$status = rex_request('status', 'string', '0');
$ticket = dance_event_ticket::query()->where('api_key', $api_key)->findOne();
$old_status = $ticket->getValue('status');
if ($ticket) {
$ticket->setValue('status', $status);
if (!$ticket->save()) { //
rex_logger::factory()->log('Error', 'error: API Call: rex_api_dance_event_ticket status not saved');
rex_response::setStatus(rex_response::HTTP_BAD_REQUEST);
} else {
if($status == 1) {
echo "✅ bestätigt, Mail wurde versendet.";
} elseif($status == -1) {
echo "❌ storniert, Mail wurde versendet.";
} else {
echo "🤔 bereits bearbeitet? Keine Mail wurde versendet.";
}
}
rex_response::setStatus(rex_response::HTTP_OK);
}
} else {
rex_logger::factory()->log('Error', 'error: API Parameter not correct');
rex_response::setStatus(rex_response::HTTP_BAD_REQUEST);
}
exit();
}
}
Ich speichere mit $ticket->save() das Ticket, der EP wird ordnungsgemäß aufgerufen.
The text was updated successfully, but these errors were encountered:
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.
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.The text was updated successfully, but these errors were encountered: