[BUGFIX] Ensure manually updated slug is saved correctly
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Documentation / Changelog / 8.0 / Breaking-72438-RemoveDeprecatedCodeFromFlashMessage.rst
1
2 .. include:: ../../Includes.txt
3
4 ===========================================================
5 Breaking: #72438 - Remove deprecated code from FlashMessage
6 ===========================================================
7
8 See :issue:`72438`
9
10 Description
11 ===========
12
13 The deprecated :php:`render()` method has been removed.
14
15
16 Impact
17 ======
18
19 Using the :php:`render()` method directly in any third party extension will result in a fatal error.
20
21
22 Affected Installations
23 ======================
24
25 Instances which use calls to the :php:`render()` method.
26
27
28 Migration
29 =========
30
31 For FlashMessages that are displayed on top of a page you can replace the :php:`render()` method with code that enqueues the message to the FlashMessageService.
32
33 Replace
34
35 .. code-block:: php
36
37    $flashMessage = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Messaging\FlashMessage::class,
38    $message,
39    $title,
40    \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR);
41    $content .= $flashMessage->render();
42
43
44 with
45
46 .. code-block:: php
47
48    $flashMessage = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Messaging\FlashMessage::class,
49    $message,
50    $title,
51    \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR);
52    $flashMessageService = GeneralUtility::makeInstance(FlashMessageService::class);
53    $defaultFlashMessageQueue = $flashMessageService->getMessageQueueByIdentifier();
54    $defaultFlashMessageQueue->enqueue($flashMessage);
55
56
57 FlashMessages that are used as inline notification should be removed and replaced with custom HTML code.
58
59 For the core we have defined output and usage for messages:
60
61 1) FlashMessages
62 ----------------
63
64 FlashMessages are designed to inform a user about success or failure of an action, which was **triggered** by the user.
65 Example: If the user deletes a record, a FlashMessage informs the user about success or failure.
66 This kind of information is not static, it is a temporary and volatile information and triggered by a user action.
67
68 Keep in mind that you **must not** use HTML markup here, since this information
69 might be shown in a context different from HTML, like processing it via Javascript or
70 showing the message on the command line.
71
72
73 2) Callouts (InfoBox-ViewHelper)
74 --------------------------------
75 Callouts are designed to display permanent information, a very good example is the usage in the Page-Module.
76 If a user opens a system folder with the page module, the callout explains: 'Hey, you try to use the page module on a sysfolder, please switch to the list module'.
77 This ViewHelper can also be used to show some help or instruction how to use a backend module.
78
79
80 3) Any other information
81 ------------------------
82 For any other information e.g. a list of files which has changed, must be handled in the action / view of the module or plugin. This is not a use case for a FlashMessage or Callout!
83 Example: Display a list of a hundred files within a FlashMessage or Callout is a bad idea, build custom markup in the view to handle this kind of message.
84
85 .. index:: PHP-API, Frontend, Backend