search_core/Documentation/source/development/configuration.rst
Daniel Siepmann 7f2249e3ff
TASK: Use a single array utility
Instead of only adding a new class for one static method, we extend the
existing class to only import a single class.

This way we extend the original array utility function collection.
2018-12-30 14:00:22 +01:00

1.9 KiB

Using custom (non-typoscript) configuration

When you are in need of your own non-typoscript configuration, you can create your own Configuration Container using the TYPO3 Dependency Injection handler.

Example: Configuration through LocalConfiguration.php

Configure your custom ext_localconf.php:

\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\Container\Container::class)
    ->registerImplementation(
        \Codappix\SearchCore\Configuration\ConfigurationContainerInterface::class,
        \YourNamespace\Configuration\SearchCoreConfigurationContainer::class
    );

SearchCoreConfigurationContainer.php:

<?php

namespace YourNamespace\Configuration;

use Codappix\SearchCore\Configuration\ConfigurationContainer;
use Codappix\SearchCore\Configuration\NoConfigurationException;
use Codappix\SearchCore\Utility\ArrayUtility;
use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface;

/**
 * Class SearchCoreConfigurationContainer
 * @package YourNamespace\Configuration
 */
class SearchCoreConfigurationContainer extends ConfigurationContainer
{
    /**
     * Inject settings via ConfigurationManager.
     *
     * @throws NoConfigurationException
     */
    public function injectConfigurationManager(ConfigurationManagerInterface $configurationManager)
    {
        parent::injectConfigurationManager($configurationManager);

        // Now override settings with LocalConfiguration
        if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['search_core'])) {
            ArrayUtility::mergeRecursiveWithOverrule($this->settings, $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['search_core']);
        }
        // Or manipulate it your own custom way.
    }
}