TYPO3 / Extbase: Unterschiedliche StoragePid einzelner Klassen / Models

Hier ein schnelles Snippet zum Thema Extbase Extensions. Wenn man in seiner Extension unterschiedliche Models bzw. Klassen hat und diese jeweils unterschiedliche Storage Seiten erhalten sollen, so ist dies nur teilweise über die QuerySettings im Repository zu erledigen.

Über die Querysettings im Repository (ausführlicher Beitrag folgt), lassen sich über eine intialize-Function mehrere StoragePids festlegen:

// Ändern der QuerySettings im Repository eines Models
    public function initializeObject() {
        /** @var $querySettings \TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings */
        $querySettings = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Typo3QuerySettings');

        $querySettings->setRespectStoragePage(FALSE);

        // neue Storage IDs
        $querySettings->setStoragePageIds(array(1, 26, 989));

        $this->setDefaultQuerySettings($querySettings);
    }

Diese Einstellung hat jedoch nur Auswirkungen auf die Abfrage wie zum Beispiel findAll() etc.

Um festzulegen, auf welcher Storage Seite neue Datensätze von Extbase gespeichert werden, ist es notwendig, die StoragePid einer Klasse komplett zu überschreiben. Das ist über die folgende Typoscript Konfiguration (newRecordStoragePid) möglich:

TYPO3 6.2.6 / mit Namespaces

plugin.tx_deineExtension {
	persistence {
                # Standard PID aus den Konstanten
		storagePid = {$plugin.tx_deineExtension.persistence.storagePid}
		classes {
            TYPO3\DeineExtension\Domain\Model\DeinModel.newRecordStoragePid = 10
        }
    }
}

3 Kommentare

  • Die Kombination von setRespectStoragePage(FALSE) mit setStoragePageIds(array(1, 26, 989)) ist etwas unsinnig, oder? Zuerst mitteilen, dass keine StoragePage berücksichtigt werden soll, danach aber konkrete Werte für die (nicht zu berücksichtigende) StoragePage setzen???

    Viele Grüße

    Julian

     

  • Hey Julian,

    ja das klingt erstmal sinnlos, hatte zu jener Zeit aber bestimmt eine tiefgründige Erklärung. Wenn Du schon gerade daran sitzt: Funktioniert es denn dennoch?

    Gruß aus Schwerin

    • In aktuellem TYPO3 7.6.2 lief es in dieser Kombination nicht. Ohne setRespectStoragePage(FALSE) bzw. mit setRespectStoragePage(TRUE) tut es.

      Danke aber für den Stups ind ie richtige Richtung.

Schreibe einen Kommentar zu Julian Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Highlighting von Codes ist mit den Tags  [ts], [php], [html], [javascript], [xml] oder [code] möglich.