Plugin-Settings in Extbase CommandController

Um die Plugin-Einstellungen einer Extbase-Extension auch im CommandController (Backend- oder CLI-Kontext) verfügbar zu machen, sollten folgendes beachtet werden:

1. die plugin Settings in module übernehmen:

module.tx_foo < plugin.tx_foo

 

2. In ext_localconf.php die constants.txt und setup.txt mittels ExtensionManagementUtility::addTypoScript einbinden:

if(TYPO3_MODE === 'BE') {
 
    // Constants
    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript($_EXTKEY,'constants',' <INCLUDE_TYPOSCRIPT: source="FILE:EXT:'. $_EXTKEY .'/Configuration/TypoScript/constants.txt">');
 
    // Setup     
    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScript($_EXTKEY,'setup',' <INCLUDE_TYPOSCRIPT: source="FILE:EXT:'. $_EXTKEY .'/Configuration/TypoScript/setup.txt">');
 
    // CommandController registrieren
    $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['extbase']['commandControllers'][] = 'Vendor\Foo\Command\FooCommandController';
 
}

damit wird sichergestellt, dass das Setup unter allen Umständen geladen wird. In der Regel bindet man das Extension Setup ja in einem Frontend TS Template ein; somit wird es im Backend / CLI Kontext nicht geladen (zumindest dann nicht, wenn man es nicht im Root Template eingebunden hat, sondern z.B. in einem Extension-Template auf einer Unterseite).

3) im Controller die Settings über den ConfigurationManager reinholen:

<?php
namespace Vendor\Foo\Command;
 
class FooCommandController extends \TYPO3\CMS\Extbase\Mvc\Controller\CommandController {
 
    /**
     * @var \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface
     * @inject
     */
    protected $configurationManager;
 
 
    /**
     * @var array
     */
    protected $settings = array();
 
 
    /**
     * Settings aus dem CibfigurationManager ziehen und zuweisen
     */
    public function initialize() {
 
        $settings = $this->configurationManager->getConfiguration(
            \TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS
        );
 
        $this->settings = $settings;
 
    }
 
    /**
     * die eigentliche Command Methode -> initialize() aufrufen
     */ 
    public function fooCommand() {
        $this->initialize();
 
        // $foo = $this->settings['bar']; 
        // Command Logik ...
    }
}

 

2 Gedanken zu „Plugin-Settings in Extbase CommandController“

  1. Halleluja. Schönes, kleines Tutorial! Besonders gefällt mir das Laden der constant.txt und setup.txt zentral in der Extension, anstatt es an 2-3 anderen Stellen zu machen.. das ist wirklich elegant gelöst. Das habe ich so bisher noch nirgendwo gesehen. Danke!

Schreibe einen Kommentar

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