YForm Tablemanager: Zuletzt angelegten Datensatz aktualisieren

Um dem Datensatz, der via YForm und Tabelmanager neu erzeugt wurde, noch etwas hinzuzufügen (z.B. Status einer Fremd-API Aktion) will man die ID des just erstellen Datensatzes haben.

Extensionpoint 'REX_YFORM_SAVED' erweitern

rex_extension::register('REX_YFORM_SAVED', ['klasse', 'methode'], rex_extension::LATE);

Kann irgendwo stehen; geht direkt in dem Modul Output oder im boot.php eines AddOns. Muss nur vor dieser Zeile ausgeführt werden:

echo $yform->getForm();

Methode deklarieren

Egal wohin, muss nur erreichbar sein von rex_extension::register.

class klasse{
	public function methode($ep) {
   		$lastId = $ep->getSubject()->getLastId();
   		$table  = $ep->getParam('table');

   		\rex::setProperty('lastId',$lastId);
   		\rex::setProperty('table',$table);

   		return TRUE;
	}
}

Datenbank aktualisieren

Im gleichen Modul, in dem auch die yForm ausgegeben wird, aber nach echo $yform->getForm();.

$update = rex_sql::factory();
$table  = rex::getProperty('table'); // der Tabellenname, nur zur Sicherheit
$lastId = rex::getProperty('lastId'); // die gesuchte Datensatz ID
$update->setDebug(FALSE);
$update->setQuery('UPDATE ' . $table . ' SET bla="foo" WHERE ID = ' . $lastId);