From dc47fd339692e2c3139e38e00e475b90bafd888f Mon Sep 17 00:00:00 2001 From: Simon Praetorius <simon@praetorius.me> Date: Tue, 3 Sep 2024 20:10:30 +0200 Subject: [PATCH] [TASK] Avoid deprecated fillFromConfigurationArray() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `fillFromConfigurationArray()` has been deprecated with Fluid v2.15. Instead, we use the new ViewFactory to create a Fluid view. Resolves: #104822 Releases: main Change-Id: I6b034452b27c8c66f72880f1608285053fcf6bf7 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85861 Tested-by: Markus Klein <markus.klein@typo3.org> Reviewed-by: Stefan Bürk <stefan@buerk.tech> Tested-by: core-ci <typo3@b13.com> Reviewed-by: Markus Klein <markus.klein@typo3.org> Tested-by: Stefan Bürk <stefan@buerk.tech> Reviewed-by: Simon Praetorius <simon@praetorius.me> Tested-by: Simon Praetorius <simon@praetorius.me> --- .../Classes/Controller/FormEditorController.php | 16 ++++++++++------ .../Controller/FormEditorControllerTest.php | 3 +++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/typo3/sysext/form/Classes/Controller/FormEditorController.php b/typo3/sysext/form/Classes/Controller/FormEditorController.php index 394472d38963..c79c4db3b2ad 100644 --- a/typo3/sysext/form/Classes/Controller/FormEditorController.php +++ b/typo3/sysext/form/Classes/Controller/FormEditorController.php @@ -18,7 +18,6 @@ declare(strict_types=1); namespace TYPO3\CMS\Form\Controller; use Psr\Http\Message\ResponseInterface; -use Psr\Http\Message\ServerRequestInterface; use TYPO3\CMS\Backend\Routing\UriBuilder; use TYPO3\CMS\Backend\Template\Components\ButtonBar; use TYPO3\CMS\Backend\Template\ModuleTemplate; @@ -33,11 +32,12 @@ use TYPO3\CMS\Core\Site\Entity\SiteLanguage; use TYPO3\CMS\Core\Utility\ArrayUtility; use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\PathUtility; +use TYPO3\CMS\Core\View\ViewFactoryData; +use TYPO3\CMS\Core\View\ViewFactoryInterface; use TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface; use TYPO3\CMS\Extbase\Mvc\Controller\ActionController; use TYPO3\CMS\Extbase\Mvc\RequestInterface; use TYPO3\CMS\Extbase\Mvc\View\JsonView; -use TYPO3\CMS\Fluid\View\TemplateView; use TYPO3\CMS\Form\Domain\Configuration\ConfigurationService; use TYPO3\CMS\Form\Domain\Configuration\FormDefinitionConversionService; use TYPO3\CMS\Form\Domain\Exception\RenderingException; @@ -70,6 +70,7 @@ class FormEditorController extends ActionController protected readonly ConfigurationService $configurationService, protected readonly UriBuilder $coreUriBuilder, protected readonly ArrayFormFactory $arrayFormFactory, + protected readonly ViewFactoryInterface $viewFactory, ) {} /** @@ -425,10 +426,13 @@ class FormEditorController extends ActionController throw new RenderingException('The option partialRootPaths must be set.', 1480294722); } $insertRenderablesPanelConfiguration = $this->getInsertRenderablesPanelConfiguration($prototypeConfiguration, $formEditorDefinitions['formElements']); - $view = GeneralUtility::makeInstance(TemplateView::class); - $view->getRenderingContext()->setAttribute(ServerRequestInterface::class, $this->request); - $view->getRenderingContext()->getTemplatePaths()->fillFromConfigurationArray($fluidConfiguration); - $view->setTemplatePathAndFilename($fluidConfiguration['templatePathAndFilename']); + $viewFactoryData = new ViewFactoryData( + templatePathAndFilename: $fluidConfiguration['templatePathAndFilename'], + partialRootPaths: $fluidConfiguration['partialRootPaths'], + layoutRootPaths: $fluidConfiguration['layoutRootPaths'], + request: $this->request, + ); + $view = $this->viewFactory->create($viewFactoryData); $view->assignMultiple([ 'insertRenderablesPanelConfiguration' => $insertRenderablesPanelConfiguration, 'formEditorPartials' => $formEditorPartials, diff --git a/typo3/sysext/form/Tests/Functional/Controller/FormEditorControllerTest.php b/typo3/sysext/form/Tests/Functional/Controller/FormEditorControllerTest.php index b795f78868a8..1cb30d57dd35 100644 --- a/typo3/sysext/form/Tests/Functional/Controller/FormEditorControllerTest.php +++ b/typo3/sysext/form/Tests/Functional/Controller/FormEditorControllerTest.php @@ -22,6 +22,7 @@ use TYPO3\CMS\Backend\Routing\UriBuilder; use TYPO3\CMS\Backend\Template\ModuleTemplateFactory; use TYPO3\CMS\Core\Imaging\IconFactory; use TYPO3\CMS\Core\Page\PageRenderer; +use TYPO3\CMS\Core\View\ViewFactoryInterface; use TYPO3\CMS\Form\Controller\FormEditorController; use TYPO3\CMS\Form\Domain\Configuration\ConfigurationService; use TYPO3\CMS\Form\Domain\Configuration\FormDefinitionConversionService; @@ -59,6 +60,7 @@ final class FormEditorControllerTest extends FunctionalTestCase $this->createMock(ConfigurationService::class), $this->createMock(UriBuilder::class), $this->createMock(ArrayFormFactory::class), + $this->createMock(ViewFactoryInterface::class), ], ); $prototypeConfiguration = [ @@ -151,6 +153,7 @@ final class FormEditorControllerTest extends FunctionalTestCase $this->createMock(ConfigurationService::class), $this->createMock(UriBuilder::class), $this->createMock(ArrayFormFactory::class), + $this->createMock(ViewFactoryInterface::class), ], ); $prototypeConfiguration = [ -- GitLab