TYPO3 v15 dev-main snapshot ()

This commit is contained in:
2026-08-10 22:31:09 +02:00
commit af8cc155b5
6818 changed files with 642608 additions and 0 deletions
@@ -0,0 +1,62 @@
.. include:: /Includes.rst.txt
.. _feature-96730:
===========================================================
Feature: #96730 - Simplified ext:backend ModuleTemplate API
===========================================================
See :issue:`96730`
Description
===========
Extensions that deliver own backend modules can now use the
:php:`TYPO3\CMS\Backend\Template\ModuleTemplate` class as
view for the 'body' part of the view and do not need to
instantiate an own view anymore.
The default document header of :php:`ModuleTemplate` can be rendered
using a new Fluid layout named `Module`.
Impact
======
The standard code within backend module related controllers
looked like this until now:
.. code-block:: php
$moduleTemplate = $this->moduleTemplateFactory->create($request);
$view = GeneralUtility::makeInstance(StandaloneView::class);
$view->setTemplateRootPaths(['EXT:my_extension/Resources/Private/Templates']);
$view->assign('aVariable', 'aValue');
$moduleTemplate->setContent($view->render('MyTemplate'));
return $this->responseFactory->createResponse()
->withHeader('Content-Type', 'text/html; charset=utf-8')
->withBody($this->streamFactory->createStream($moduleTemplate->renderContent($templateFileName)));
This can be streamlined as shown below. Template paths (Templates, Layouts, Partials)
are configured automatically, calling :php:`renderResponse('SomeController/SomeAction')` will look for file
:file:`Resources/Private/Templates/SomeController/SomeAction.html`. Templates can be
overridden by other extensions using page TSconfig, see :doc:`this changelog entry <Feature-96812-OverrideBackendTemplatesWithTSconfig>`
for details on this.
.. code-block:: php
$moduleTemplate = $this->moduleTemplateFactory->create($request);
$moduleTemplate->assign('aVariable', 'aValue');
return $moduleTemplate->renderResponse('MyTemplate');
The HTML template should then reference the ModuleTemplate layout:
.. code-block:: html
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Module" />
<f:section name="Content">
My body content
</f:section>
</html>
.. index:: Backend, Fluid, PHP-API, ext:backend