Extension Settings abfragen

Wenn man die TypoScript Settings einer Extension abfragen will, kann man normalerweise folgenden Aufruf verwenden:

Typoscript: 
  plugin.tx_myextension_pi1 {
    settings {
      something = 123456
    }
  }
PHP: 
  $var = $this->settings['something'];

Allerdings benötigt man dafür den Extbase Controller Kontext. Es gibt aber immer wieder Situationen, bei denen dieser nicht verfügbar ist:

  • Abfrage von TypoScript Parametern einer anderen Extension
  • Scheduler Task
  • Hooks

Dann kann man über den Configuration Manager das Typoscript laden:

PHP: 
  /** @var \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface $configurationManager */
  $configurationManager = $objectManager->get('TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface');
  $settings = $configurationManager->getConfiguration(
     \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT,
       'myextension',
       'myextension_pi1'
     );
  $var = $settings['plugin.']['tx_myextension_pi1.']['settings.']['something'];

Hinweis:
Dieser Code lädt alle Typoscript Settings der gesamten Installation, das ist an sich viel zu viel. Sinnvoller erscheint mir der Parameter: ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS. Allerdings war der Rückgabewert in meinem Beispiel null (Scheduler Task).
Hier gibts einen Thread wie man das vermeiden kann: https://forum.typo3.org/index.php/t/215550/

Ein Beispiel findet man übrigens auch in
EXT:news/Classes/Controller/NewsController ->injectConfigurationManager

 

Schreibe einen Kommentar

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