[DOCS] 7.5 Docs Part 10
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Documentation / Changelog / 7.5 / Feature-69401-AdoptFormToSupportTheExtbaseFluidMVCStack.rst
1 ====================================================================
2 Feature: #69401 - Adopt form to support the Extbase/ Fluid MVC stack
3 ====================================================================
4
5 Description
6 ===========
7
8 Short summery
9 -------------
10
11 The form extension - including the custom data model, controller logic,
12 property validation, views and templating - has been adopted to support
13 the Extbase/ Fluid MVC stack. This allows better customization and
14 control of the generated behavior and markup by simply modifying Fluid
15 templates or utilizing own custom view helper logic. At the same time
16 the rewrite must not break current setups, i.e. the frontend rendering
17 must be as compatible as possible.
18
19 Details
20 -------
21
22 Fluid Rendering
23 ^^^^^^^^^^^^^^^
24
25 The rendering of the frontend output is based on Fluid. Form relies on
26 the native Fluid viewhelpers of the core and ships 2 new viewhelpers
27 for optimal rendering of the SELECT object including the support of
28 OPTGROUP objects. Furthermore a viewhelper is included to optimize the
29 output of text mails.
30
31 To support existing setups a compatibility mode is introduced. The mode
32 is activated by default. This has no impact on the rendering as long as
33 no "old" TypoScript settings (like .layout =) are present. If old
34 rendering settings are used a compatibility theme is loaded which
35 guarantees maximum backwards compatibility including all the different
36 wrap-abilities like ``containerWrap`` and ``elementWrap``.
37
38 For new installations it is recommended to switch off the compatibility
39 mode and use own Fluid templates to customize the output.
40
41 For each form object and view a Fluid partial is available. There are 3
42 views: the form itself (show), the confirmation page (confirmation) and
43 the email (postProcessor/ mail). The patch allows to customize the
44 frontend output for every single view, e.g. one can have a custom Fluid
45 partial for the BUTTON object of the confirmation view.
46
47 The ``partialRootPath`` can be overridden or extended to customize the form
48 objects on a global scope. Furthermore it is possible to set a partial
49 path for each form element on a local scope.
50
51 .. code-block:: typoscript
52
53         10 = BUTTON
54         10 {
55                 label = My button
56                 name = myButton
57                 partialPath = FlatElements/MyButton
58         }
59
60 The Fluid rendering would look for a MyButton.html located in the
61 defined ``partialRootPath``.
62
63 In addition it is now possible to decide if an element should be
64 rendered for a specific view. The visualisation can be adopted by using
65 the TypoScript settings ``visibleInShowAction``, ``visibleInConfirmationAction``
66 and ``visibleInMail``. As an example, this is utilized to hide the FIELDSET
67 object on the confirmation page which was the default behaviour in
68 earlier versions of form.
69
70 Extensibility
71 ^^^^^^^^^^^^^
72
73 It is now possible to register custom form objects and attributes
74 easily only by using TypoScript and Fluid. Form attributes can now be
75 cObjects and use stdWrap. This is only possible if the form was not
76 designed within the form wizard.
77
78 Furthermore 2 new signal slots are implemented to allow the
79 manipulation of the form objects and the submitted data.
80
81 Validation
82 ^^^^^^^^^^
83
84 The validators are now using the extbase property mapping validation
85 process.
86
87 Additional information
88 ^^^^^^^^^^^^^^^^^^^^^^
89
90 The session handling was dropped since it was unstable (see #58765). Now
91 form relies on the concepts of Extbase.
92
93 The unit tests have been adopted to reflect the code changes.
94
95 Future
96 ^^^^^^
97
98 Further patches are needed to adopt the form wizard. The wizard still
99 works as it used to after applying this patch but it is not able to
100 reflect the new features like choosing a partial path for a single
101 element.
102
103 Another patch will take care of the documentation.
104
105 A few more patches will come which will fix some issues regarding the
106 validators and filters.