storagePid Fallback auf aktuelle Seite

Fallback auf aktuelle Seite für storagePi

Eine Extbase Extension arbeitet mit der storagePid um Datensätze aus dem Repository zu holen oder dort zu speichern.

Wenn man vergisst diese Eingenschaft zu definieren kann das schnell zu Problemen führen.

Außerdem ist es für manche Extensions sinnvoll immer auf der aktuellen Seite die Daten abzulegen da diese zur jeweiligen Seite dazu gehören, z.B. Kommentar Extensions.

Da häufig die Seite in der auch das Plugin konfiguriert ist als Speicher verwendet wird, habe ich in die initializeAction ein Fallback auf die aktuelle Seite geschrieben.

Update 05.07.2013:

Ergänzung um TYPO3 6.0 Kompatibilität, danke an Max Hellwig.

Fallback to current pid via PHP in the controller

/**
 * initialize the controller
 *
 * @return void
 */
protected function initializeAction() {
	parent::initializeAction();
	//fallback to current pid if no storagePid is defined
	if (version_compare(TYPO3_version, '6.0.0', '>=')) {
		$configuration = $this->configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
	} else {
		$configuration = $this->configurationManager->getConfiguration(Tx_Extbase_Configuration_ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
	}
	if (empty($configuration['persistence']['storagePid'])) {
		$currentPid['persistence']['storagePid'] = $GLOBALS["TSFE"]->id;
		$this->configurationManager->setConfiguration(array_merge($configuration, $currentPid));
	}
}

Via TypoScript

# Ab Extbase 1.3 / TYPO3 4.5
# http://forge.typo3.org/projects/typo3v4-mvc/wiki/TypoScript_Storage_PID_improvements
# Ungetestet! Via TypoScript:
plugin.tx_extkey.persistence.storagePid.ifEmpty.data = {page:uid}
Stichwörter zu dieser Seite: 
Generator: TYPO3 CMS 6.2
Google Page Speed
@t3easy_de folgen
Google+