---
title: "Repository in User Function benützen"
url: "https://www.typo3.net/d/119084-repository-in-user-function-benuetzen"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Datenbank","Extbase","Frage","TYPO3 6.x"]
created: "2014-10-24"
last_reply: "2014-10-25"
replies: 2
solved: false
page: 1
pages: 1
lang: "de"
---

# Repository in User Function benützen

Extensions › Entwicklung · 2 Antworten · gestartet 2014-10-24

## Eröffnungsbeitrag

**MichaelF** · 2014-10-24 · [Beitrag #1](https://www.typo3.net/d/119084-repository-in-user-function-benuetzen/1)

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:

```php
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**.

```php
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.

## Antworten

### [#2](https://www.typo3.net/d/119084-repository-in-user-function-benuetzen/2) · jenses · 2014-10-25

Offtopic: Man kann an deinen beiden Beispielen sehr schön die "Vorteile" von dem so hochgelobten extbase sehen, daß ja angeblich alles so viel einfacher macht ( 7 Anweisungen vs. 1 ) 8-)

### [#3](https://www.typo3.net/d/119084-repository-in-user-function-benuetzen/3) · MichaelF · 2014-10-25

@jenses Sowas Ähnliches ging mir auch durch den Kopf. Es kann gut auch daran liegen, dass ich es einfach falsch gemacht habe.

Ich habe nun eine Variante gefunden, die funktioniert: Ich habe im Repository diese Methode hinzugefügt:

```php
public function manuallyPersistAll() {
  $this->persistenceManager->persistAll();
}
```

Diese rufe ich dann auf in AfterSaveUserFunction::main:

```php
$repository->manuallyPersistAll();
```

Dies ist eine Trial-and-Error-Lösung für ein Problem, das ich nicht verstanden habe. Ist das richtig so?

---

Quelle: „Repository in User Function benützen“, typo3.net, https://www.typo3.net/d/119084-repository-in-user-function-benuetzen
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
