[BUGFIX] Fix PageTS config example of CKEditor RTE
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Documentation / Changelog / 8.6 / Feature-79530-EXTform-ExtendSaveToDatabaseFinisher.rst
1 .. include:: ../../Includes.txt
2
3 ============================================================
4 Feature: #79530 - EXT:form -  Extend SaveToDatabase finisher
5 ============================================================
6
7 See :issue:`79530`
8
9 Description
10 ===========
11
12 The SaveToDatabase finisher has been extended by the following functions:
13
14 Perform multiple database operations
15 ------------------------------------
16
17 You can set options as an array to perform multiple database operations.
18
19 .. code-block:: yaml
20
21      finishers:
22        -
23          identifier: SaveToDatabase
24          options:
25            -
26              table: 'my_table'
27              mode: insert
28              databaseColumnMappings:
29                some_column:
30                  value: 'cool'
31            -
32              table: 'my_other_table'
33              mode: update
34              whereClause:
35                pid: 1
36              databaseColumnMappings:
37                some_other_column:
38                  uid_foreign: '{SaveToDatabase.insertedUids.0}'
39
40 Access the inserted uids from previous database inserts
41 -------------------------------------------------------
42
43 You can access the inserted uids via '{SaveToDatabase.insertedUids.<theArrayKeyNumberWithinOptions>}'.
44 If you perform an insert operation, the value of the inserted database row will be stored within the FinisherVariableProvider.
45 '<theArrayKeyNumberWithinOptions>' references to the numeric key from the 'options' array within which the insert operation is executed.
46
47 Add a special option value '{__currentTimestamp}'
48 -------------------------------------------------
49
50 You can write '{__currentTimestamp}' as an option value which returns the current timestamp.
51
52 .. code-block:: yaml
53
54      finishers:
55        -
56          identifier: SaveToDatabase
57          options:
58            -
59              table: 'my_table'
60              mode: insert
61              databaseColumnMappings:
62                tstamp:
63                  value: '{__currentTimestamp}'
64
65 Add a variable container object which is passed through all finishers
66 ---------------------------------------------------------------------
67
68 There is a simple data storage object available within the '\TYPO3\CMS\Form\Domain\Finishers\FinisherContext'.
69 You can access this from within a finisher with
70
71 .. code-block:: php
72
73         $this->finisherContext->getFinisherVariableProvider()
74
75 Each finisher can write and/or read data from this object.
76 All data has to be prefixed with the finisher identifier, so you can determine what data from which finisher you want.
77
78 Prototype to add some data:
79
80 .. code-block:: php
81
82     $this->finisherContext->getFinisherVariableProvider()->add(
83         $this->shortFinisherIdentifier,
84         'some.data',
85         $yourData
86     );
87
88 Prototype to get some data:
89
90 .. code-block:: php
91
92     $otherFinisherData = $this->finisherContext->getFinisherVariableProvider()->get(
93         'SomeFinisherIdentifier',
94         'some.data'
95     );
96
97 You can access this data within the form definition:
98
99 For example, a finisher with identifier 'SomeFinisherIdentifier' writes data with the key 'some.data'
100
101 .. code-block:: yaml
102
103      finishers:
104        -
105          identifier: SaveToDatabase
106          options:
107            -
108              table: 'my_table'
109              mode: insert
110              databaseColumnMappings:
111                tstamp:
112                  value: '{SomeFinisherIdentifier.some.key}'
113
114 You can read more about the configuration options within the SaveToDatabase inline documentation.
115 Please see `\TYPO3\CMS\Form\Domain\Finishers\SaveToDatabaseFinisher`.
116
117 .. index:: Frontend, ext:form