Feature: #92358 - Add getModuleTemplate() to PageLayoutController¶
See forge#92358
Description¶
The TYPO3\CMS\Backend\Controller\PageLayoutController
features
two hooks for manipulating the "Page" module. drawHeaderHook
and
drawFooterHook
. Those hooks already
receive the parent object PageLayoutController
. Since the calling
code expects the hooks to return additional content, it was previously
not possible to change other parts of the module, for example the module header.
To give developers more possibilities in manipulating the "Page" module,
using the mentioned hooks, the parent object now contains a new getter
method getModuleTemplate()
. It can for example be used to add an
additional button to the modules' button bar.
public function drawHeaderHook(array $parameters, PageLayoutController $parentObject)
{
$moduleTemplate = $parentObject->getModuleTemplate();
$buttonBar = $moduleTemplate->getDocHeaderComponent()->getButtonBar();
$linkButton = $buttonBar
->makeLinkButton()
->setHref('/typo3/some/url')
->setTitle('My custom button')
->setClasses('custom-link-class')
->setIcon($moduleTemplate->getIconFactory()->getIcon('actions-link', Icon::SIZE_SMALL));
$buttonBar->addButton($linkButton);
}
Impact¶
When using either the drawHeaderHook
or the drawFooterHook
of the
PageLayoutController
, the provided parent object now contains
the getModuleTemplate()
method, which can be used to retrieve
the corresponding \TYPO3\CMS\Backend\Template\ModuleTemplate
instance.
This provides more flexibility to third party code manipulating the "Page"
module view.