Zum Hauptinhalt springen Skip to page footer

Häufig verwendete Funktionen in Extbase Repositories

Eine Sammlung von häufig verwendeten Funktionen im Zusammenhang mit Extbase Repositories, d.h. Datenbank-Zugriffen aus Extbase Erweiterungen.

In diesem Beitrag zeige ich verschiedene Möglichkeiten auf, wie ich die Repository Settings in einer Extbase Erweiterung je nach Bedarf anpasse.

Einige Beispiele hier sollen zeigen, wie man zum Beispiel im Controller eine Extbase Erweiterung dynamisch die Repository Settings anpassen kann.

Der Eintrag wird hin und wieder mit aktuellen Methoden und Funktionen angepasst bzw erweitert.

Default Query Settings im Controller

Für umfangreichere QuerySettings im Controller verwende ich häufig eine Funktion zum Setzen von Repository Settings, als Beispiel folgende Funktion:

/**
 * @param bool $respectStoragePage
 * @param bool $includeDeleted
 * @param bool $ignoreEnableFields
 * @param bool $respectSysLanguage
 * @param array $storagePageIds
 * @return object|Typo3QuerySettings
 */
protected function getDefaultQuerySettings(
	$respectStoragePage = false,
	$includeDeleted = false,
	$ignoreEnableFields = true,
	$respectSysLanguage = false,
	$storagePageIds = []
) {
	/** @var $defaultQuerySettings Typo3QuerySettings */
	$objectManager = GeneralUtility::makeInstance(ObjectManager::class);
	$defaultQuerySettings = $objectManager->get(Typo3QuerySettings::class);
	$defaultQuerySettings->setRespectStoragePage($respectStoragePage);
	$defaultQuerySettings->setIncludeDeleted($includeDeleted);
	$defaultQuerySettings->setIgnoreEnableFields($ignoreEnableFields);
	$defaultQuerySettings->setRespectSysLanguage($respectSysLanguage);
	if (!empty($storagePageIds)) {
		$defaultQuerySettings->setStoragePageIds($storagePageIds);
	}
	return $defaultQuerySettings;
}

 

Im Controller kann man diese dann in einer Funktion beispielsweise so verwenden:

/**
 * My special action
 *
 * @return void
 * @throws
 */
public function mySpecialAction(): void
{
	$storagePids = [123,234];
	$defaultQuerySettings = $this->getDefaultQuerySettings(
		true,
		true,
		true,
		false,
		$storagePids
	);
	$this->frontendUserRepository->setDefaultQuerySettings($defaultQuerySettings);
	$user = $this->frontendUserRepository->findAll();

	$this->view->assignMultiple(
		[
			'user' => $user,
		]
	);
}