In dieser Anleitung wird erklärt, wie man (Ab V12 kompatibel) den PersistenceManager nutzt, um z.B. Formular-Daten in einer Datenbank zu speichern
1. PersistenceManager holen und injizieren
Um den TYPO3 Extbase PersistanceManager nutzen zu können, holen wir uns diesen in unsere Klasse:
<?php
namespace LdoerrDotCom\MeineExtension\Controller;
use TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager;
...
//PersistenceManager injizieren:
/**
* @var PersistenceManager
*/
protected $persistenceManager;
/**
* Injects the Persistence Manager
*
* @param PersistenceManager $persistenceManager
*/
public function injectPersistenceManager(PersistenceManager $persistenceManager)
{
$this->persistenceManager = $persistenceManager;
}
//Hier wird als Beispiel ein Formular Model genutzt:
/**
* formRepository
*
* @var \LdoerrDotCom\MeineExtension\Domain\Repository\FormRepository
*/
protected $formRepository = NULL;
public function injectFormRepository(FormRepository $formRepository)
{
$this->formRepository = $formRepository;
}
2. Repository in Action initialisieren und mit Daten füllen
Nun initialisieren wir unser Model in einer beliebigen Action:
$newFormObject = new \LdoerrDotCom\MeineExt\Domain\Model\Form();
//Nun füllen wir das Form Model mit unseren Daten:
$newFormObject->setName('Max Mustermann');
//Die Daten werden der formRepository hinzugefügt:
$this->formRepository->add($newFormObject);
//Die Daten werden in der Datenbank abgespeichert:
$this->persistenceManager->persistAll();
//Prüfen, ob das Speichern funktioniert hat:
if($newFormObject->getUid()) {
die("hat geklappt");
}
else {
die("hat nicht geklappt");
}