Plugin-Settings in Extbase CommandController

Damit die Plugin-Settings einer Extbase Extension auch im CommandController (Backend / CLI Kontext) verfügbar sind, muss auf folgendes geachtet werden:

1. die plugin Settings in module kopieren:

module.tx_foo < plugin.tx_foo

 

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

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 zu Simon Köhler Antworten abbrechen

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