Skip to content
  • Alexander Schnitzler's avatar
    [TASK] Use FQCN's when registering plugins/modules · e67b6cf1
    Alexander Schnitzler authored and Anja Leichsenring's avatar Anja Leichsenring committed
    The following methods used controller aliases:
    
    - \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin
    - \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule
    
    This means, that while configuring plugins or modules, a list
    of controllers (and their actions) had to be provided, so they
    could be registered as available controllers for said plugin
    or module.
    
    The controller name used for the registration, was kind of an
    alias for that controller. It was the class name without the
    namespace and without the "Controller" suffix. By a certain
    convention a proper class name could be derived from that
    alias. All this was necessary back then when TYPO3 didn't have
    a proper autoloader and when the class location was derived
    from the class name. These circumstances do not exist any more
    and since it's only important that a controller class exists,
    the registration of plugins must now use the fully qualified
    controller class name as array key.
    
    The former syntax
    
       \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
           'TYPO3.CMS.IndexedSearch',
           'Pi2',
           ['Search' => 'form,search,noTypoScript'],
           ['Search' => 'form,search']
       );
    
    has to be converted to
    
       \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
           'IndexedSearch',
           'Pi2',
           [
               \TYPO3\CMS\IndexedSearch\Controller\SearchController::class
                   => 'form,search,noTypoScript'
           ],
           [
               \TYPO3\CMS\IndexedSearch\Controller\SearchController::class
                   => 'form,search'
           ]
       );
    
    Please note, that not only the controller configuration changed.
    The vendor `TYPO3.CMS` in `TYPO3.CMS.IndexedSearch`, must no longer
    be set. Instead, the vendor will be evaluated by looking at the
    controller namespace.
    
    Releases: master
    Resolves: #87550
    Change-Id: If47d087836c4345a8180dae3d4e4b8cd384e684c
    Reviewed-on: https://review.typo3.org/59566
    
    
    Tested-by: default avatarTYPO3com <noreply@typo3.com>
    Reviewed-by: default avatarJörg Bösche <typo3@joergboesche.de>
    Reviewed-by: default avatarMona Muzaffar <mona.muzaffar@gmx.de>
    Tested-by: default avatarMona Muzaffar <mona.muzaffar@gmx.de>
    Reviewed-by: default avatarAnja Leichsenring <aleichsenring@ab-softlab.de>
    Tested-by: default avatarAnja Leichsenring <aleichsenring@ab-softlab.de>
    e67b6cf1