ExtBase Framework Configuration

Während wir im damaligen Templatesystem alle TypoScriptangaben selbst im Script verankern mussten, bringt FLOW3 bereits ein paar TS-Strukturen mit. So können wir unseren storage-Folder nicht mehr mit jeder x-beliebigen TS-Variable abfragen im Script abfragen, sondern müssen uns an die Vorgaben von FLOW3 halten.

Dazu macht ein Blick in die AbstractConfigurationManager.php Sinn. Hier gibt es die Funktion "getFrameworkConfiguration". Wir können hier sehr schön erkennen, dass hier mit drei Konfigurationen gearbeitet wird:

- frameworkConfiguration
- extbaseConfiguration
- pluginConfiguration

Die Framework-Konfiguration besteht nur aus der Angabe zum StoragePid:

$frameworkConfiguration['persistence']['storagePid'] = self::DEFAULT_BACKEND_STORAGE_PID;

Die Konstante DEFAULT_BACKEND_STORAGE_PID steht per default auf 0;

Danach wird die extbase-Konfiguration geladen. Die Daten kommen aus der Datei ext_typoscript_setup.txt des extbase-Verzeichnisses:

config.tx_extbase {
    persistence{
        enableAutomaticCacheClearing = 1
        updateReferenceIndex = 0
        classes {
            Tx_Extbase_Domain_Model_FrontendUser {
                mapping {
                    tableName = fe_users
                    columns {
                        usergroup.foreignClass = Tx_Extbase_Domain_Model_FrontendUserGroup
                        lockToDomain.mapOnProperty = lockToDomain
                    }
                }
            }
            Tx_Extbase_Domain_Model_FrontendUserGroup {
                mapping {
                    tableName = fe_groups
                    columns {
                        subgroup.foreignClass = Tx_Extbase_Domain_Model_FrontendUserGroup
                        lockToDomain.mapOnProperty = lockToDomain
                    }
                }
            }
        }
    }
}

plugin.tx_extbase._CSS_DEFAULT_STYLE (
    input.f3-form-error {
        background-color:#FF9F9F;
        border: 1px #FF0000 solid;
    }
)

Mit der Funktion "configurePlugin" in der ext_tables.php wird für jede Extension automatisch eine Plugin-Konfiguration erstellt, die Ihr Euch im TypoScript-Objektbrowser unter plugin.tx_sffluid anschauen könnt. Hier findet Ihr unteranderem auch unter "view" eine Möglichkeit einen anderen Templatepfad anzugeben. Ich hab das mal getestet und folgende Angabe gemacht:

plugin.tx_sffluif.view.templateRootPath = EXT:sffluid/Templates/

Dieser Ordner muss natürlich in der Extension angelegt werden und als Unterordner benötigt es einen Ordner mit dem Namen des Controllers. In unserem Beispiel "Blabla".

Die Plugin-Konfiguration wird in der Extension.php dynamisch erstellt und schaut so aus:

$pluginTemplate = 'plugin.tx_' . strtolower($extensionName) . ' {
    settings {
    }
    persistence {
        storagePid =
        classes {
        }
    }
    view {
        templateRootPath =
        layoutRootPath =
        partialRootPath =
    }
}';