68 lines
2.7 KiB
ReStructuredText
68 lines
2.7 KiB
ReStructuredText
.. include:: /Includes.rst.txt
|
|
|
|
.. _breaking-92529:
|
|
|
|
=========================================================
|
|
Breaking: #92529 - All Fluid widget functionality removed
|
|
=========================================================
|
|
|
|
See :issue:`92529`
|
|
|
|
Description
|
|
===========
|
|
|
|
First things first: All fluid widgets and all widget functionality have been removed!
|
|
|
|
The most important issue of fluid widgets is, that they initiate sub requests to a
|
|
controller from inside the view and output their content. Those sub requests bring
|
|
another layer of complexity to the TYPO3 world that is impossible to handle properly
|
|
as many bug reports show. TYPO3 already uses some kind of namespacing for url query
|
|
arguments to separate arguments for different plugins on a single page. Widgets
|
|
introduced another layer which made it necessary to yet again introduce namespacing
|
|
in the existing namespace.
|
|
|
|
To make fluid widgets work, they need to work on the request object of the parent
|
|
plugin, i.e. the one that renders the view which holds the widget. This is a problem
|
|
regarding our efforts using PSR-7 request objects in Extbase which are immutable
|
|
by definition.
|
|
|
|
A special kind of widget is the ajax widget which introduced even more complexity.
|
|
One example was the already removed auto complete widget. The widget could be used
|
|
to fetch values from the database for autocompletion while entering a textfield in
|
|
a form. In order to perform that kind of magic, fluid came with a new page type (7076)
|
|
for handling incoming ajax requests. Since that endpoint didn't know about the specifics
|
|
of the widget that should be rendered, the widget context had to be serialized before
|
|
the ajax request, bound to the user with a unique id and stored in the users session
|
|
data just to be unserialized moments later to have a back reference to initiating request.
|
|
|
|
The fluid widgets violated the design pattern "separation of concern" to a degree
|
|
that they caused more trouble than benefit. Therefore, fluid widgets have been
|
|
removed from TYPO3 core.
|
|
|
|
Impact
|
|
======
|
|
|
|
- All fluid templates that used an existing widget will no longer work as expected.
|
|
- Also, all custom widgets of users will no longer work and have to be replaced
|
|
with custom solutions.
|
|
|
|
|
|
Affected Installations
|
|
======================
|
|
|
|
All installations that either used widgets defined by the core or those installations
|
|
that created own widgets.
|
|
|
|
|
|
Migration
|
|
=========
|
|
|
|
There is no simple migration strategy for all widgets but the most common
|
|
functionality (pagination) can be solved with a new pagination core api. The main
|
|
difference compared to a widget is that the pagination has to be initialized
|
|
in the controller action and not in the view.
|
|
|
|
For all other widgets, custom solutions have to be found.
|
|
|
|
.. index:: Fluid, PHP-API, NotScanned, ext:fluid
|