Hallo Freunde
Folgendes möchte ich machen: Wenn jemand sich über direct_mail_subscription anmeldet, möchte ich in seinem tt_address-Record einige Felder ändern (z.B. ein Datum setzen, override genügt nicht).
Folgendes habe ich probiert: ich setze meine eigene User Function bei plugin.feadmin.dmailsubscription.create.userFunc_afterSave.
Das klappt ganz gut so:
class AfterSaveUserFunction {
public function main($config, $ref) {
$GLOBALS['TYPO3_DB']->exec_UPDATEquery('tt_address','uid='.intval($config['rec']['uid']), array('city' => 'Rome'));
}
}
Wenn ich das allerdings über ein Repository zu bewerkstelligen versuche, werden die Änderungen nicht gespeichert.
class AfterSaveUserFunction {
public function main($config, $ref) {
// get the recipient repository (injecting does not seem to work)
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('\TYPO3\CMS\Extbase\Object\ObjectManager');
$repository = $objectManager->get('\XYZ\MeineExtension\Domain\Repository\RecipientRepository');
// update recipient
$recipient = $repository->findByUidOnAllPages($config['rec']['uid'], true)->getFirst();
$recipient->setCity('Rome');
$repository->update($recipient);
// persist (does not work)
$persistenceManager = $objectManager->get('\TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager');
$persistenceManager->persistAll();
}
}
Ich wäre Euch sehr dankbar, wenn Ihr mir sagen könntet, warum das nicht geht. Oder wie das mit Extbase zu machen ist.