Wenn man mit Extbase ein Backend Modul erstellt, sind im Controller die Settings auf die man in einem Frontend Controller mit $this->settings direkt zugreifen kann, nicht verfügbar.
Damit das auch in einem Backend Modul funktioniert, sind 2 Sachen notwendig.
1) Die Zuweisung der Settings im Typoscript Template:
plugin.tx_foo { settings { foo = bar } } module.tx_foo.settings < plugin.tx_foo.settings |
2) im Controller die Settings über den Tx_Extbase_Configuration_BackendConfigurationManager holen, beispielsweise in der initializeAction:
/** * @return void */ public function initializeAction() { if(TYPO3_MODE === 'BE') { $configurationManager = t3lib_div::makeInstance('Tx_Extbase_Configuration_BackendConfigurationManager'); $this->settings = $configurationManager->getConfiguration( $this->request->getControllerExtensionName(), $this->request->getPluginName() ); } } |
Damit man sich die Abfrage ob man sich im Backend befindet sparen kann (TYPO3_MODE === ‚BE‘), empfehle ich für das Backend Modul einen eigenen Controller zu machen der dann auch nur dort verwendet wird.
Hallo Alexander
Danke für diesen Hinweis! Allerdings scheint das bei mir nicht zu funktionieren. Ich habe diese Codezeilen bei mir eingefügt, aber mit $this->settings[‚…‘] bekomme ich trotzdem keine Daten geladen.
Ich habe testweise den plugin-Namen direkt in den Aufruf geschrieben, was aber keine Verbesserung brachte.
Gibts hier noch etwas zu beachten?
Hey,
ja – du musst zusätzlich noch die plugin settings in die module settings kopieren.
Das hab ich ganz vergessen, danke für den Hinweis – werde es im Artikel ergänzen.
plugin.tx_foo {
settings {
...
}
}
module.tx_foo.settings < plugin.tx_foo.settings
HTH
Alex
Hallo
Danke für die Ergänzung.
Leider habe ich bei mir immernoch ein Problem, daß die Plugin-Settings nicht im Modul aufrufbar sind. Liegt wohl an der Benennung in ext_tables.php. Ich werde aus der (mangelhaften) extbase-Doku nicht schlau, wie das Modul heißt wenn es folgende Werte in der ext_table.php hat:
if (TYPO3_MODE == ‚BE‘ && !(TYPO3_REQUESTTYPE & TYPO3_REQUESTTYPE_INSTALL)) {
Tx_Extbase_Utility_Extension::registerModule(
$_EXTKEY,
‚web‘,
‚module‘,
‚after:web_func‘,
array(
mein Frontendplugin heißt zB
plugin.tx_psoaaccredit
wie heißt dann nach den obigen Einstellungen das Modul?
Hallo Johannes,
wie das Modul genau heißt ist eigentlich nicht relevant, da du mit module.tx_psoaaccredit.settings die Settings global für alle Module dieser Extension setzt!
Das gleiche gilt fürs Frontend.
plugin.tx_psoaaccredit = komplette Extension,
plugin.tx_psoaaccredit_plugin = spezifisch nur für dieses Plugin.