TYPO3 v15 dev-main snapshot ()
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
.. include:: /Includes.rst.txt
|
||||
|
||||
.. _deprecation-95222:
|
||||
|
||||
===========================================
|
||||
Deprecation: #95222 - Extbase ViewInterface
|
||||
===========================================
|
||||
|
||||
See :issue:`95222`
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
To further streamline Fluid view-related class inheritance and dependencies,
|
||||
the interface :php:`TYPO3\CMS\Extbase\Mvc\View\ViewInterface` has been marked
|
||||
as deprecated and will be removed in TYPO3 v12.
|
||||
|
||||
Impact
|
||||
======
|
||||
|
||||
This deprecation has minimal impact on TYPO3 v11:
|
||||
|
||||
* The interface remains available in the Core without triggering
|
||||
a E_USER_DEPRECATED warning.
|
||||
* ViewInterface primarily differs from other view-related classes by
|
||||
requiring an implementation of :php:`initializeView()`, a method that was
|
||||
never actively used within TYPO3's Core. This method should not be confused
|
||||
with :php:`initializeView()` in Extbase controllers, which is frequently
|
||||
implemented by developers and serves a different purpose. The removal
|
||||
of :php:`initializeView()` only affects view-related logic and does not
|
||||
impact controller initialization.
|
||||
* Another deviation is the method :php:`setControllerContext()`, which is
|
||||
also deprecated because :php:`ControllerContext` itself is marked
|
||||
as deprecated.
|
||||
|
||||
Affected Installations
|
||||
======================
|
||||
|
||||
The extension scanner will detect usages of Extbase :php:`ViewInterface` as a
|
||||
strong match.
|
||||
|
||||
Migration
|
||||
=========
|
||||
|
||||
Adjusting initializeView() method signature in controllers
|
||||
----------------------------------------------------------
|
||||
|
||||
Some extensions may rely on :php:`ViewInterface` type hints, particularly in
|
||||
the :php:`initializeView()` method of Extbase action controllers. The default
|
||||
implementation of :php:`initializeView()` in :php:`ActionController` is empty.
|
||||
|
||||
In TYPO3 v12:
|
||||
|
||||
* This empty method will be removed from :php:`ActionController`.
|
||||
* However, if an :php:`initializeView()` method exists in a subclass of
|
||||
:php:`ActionController`, it will still be called.
|
||||
* Extension authors should not call :php:`parent::initializeView($view)`, as
|
||||
this parent method will no longer exist.
|
||||
* The method signature should be updated to prevent PHP
|
||||
contravariance violations:
|
||||
|
||||
Old:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
protected function initializeView(ViewInterface $view)
|
||||
|
||||
New:
|
||||
|
||||
.. code-block:: php
|
||||
|
||||
protected function initializeView($view)
|
||||
|
||||
Replacing ViewInterface
|
||||
-----------------------
|
||||
|
||||
Instead of using :php:`\TYPO3\CMS\Extbase\Mvc\View\ViewInterface`, extension
|
||||
authors should switch to:
|
||||
|
||||
* :php:`\TYPO3\CMS\Fluid\View\StandaloneView` — typically in
|
||||
non-Extbase-related classes.
|
||||
* :php:`\TYPO3Fluid\Fluid\View\ViewInterface` — for a more
|
||||
generic replacement.
|
||||
|
||||
Handling Custom Views
|
||||
---------------------
|
||||
|
||||
If an extension defines a custom view implementing :php:`ViewInterface`, note
|
||||
that auto-configuration based on this interface will be removed in TYPO3 v12.
|
||||
As a result, manual service configuration in :file:`Services.yaml` may
|
||||
be necessary.
|
||||
|
||||
.. index:: Fluid, PHP-API, FullyScanned, ext:fluid
|
||||
Reference in New Issue
Block a user