TYPO3-Headless / headless

TYPO3 Headless JSON API providing content for PWA application (e.g. javaScript apps like nuxt-typo3)
https://t3headless.io
GNU General Public License v2.0
156 stars 57 forks source link

Merge fields and dataProcessing in JSON content #577

Open dvdmlln opened 1 year ago

dvdmlln commented 1 year ago

Hi,

currently it is not possible to define fields and dataProcessing because dataProcessing overwrites the whole content. For example I'd like to define add a flexform to a text field.

The typoscript looks like this:

tt_content.text {
    fields {
        content {
            fields {
                flexform {
                    dataProcessing {
                        10 = FriendsOfTYPO3\Headless\DataProcessing\FlexFormProcessor
                        10 {
                            fieldName = pi_flexform
                            as = flexform
                        }
                    }
                }
            }
        }
    }
}

and the JSON output:

"content": {
  "header": "header",
  "subheader": "",
  "headerLayout": 0,
  "headerPosition": "",
  "headerLink": "",
  "bodytext": "bodytext"
  "flexform": {
    "additionalData": "data"
  }
}

So I moved the dataProcessing one level up like this so additionalData property moves on level up:

tt_content.text {
    fields {
        content {
            dataProcessing {
                10 = FriendsOfTYPO3\Headless\DataProcessing\FlexFormProcessor
                10 {
                    fieldName = pi_flexform
                    as = flexform
                }
            }
        }
    }
}

This leads to the dataProcessing overwriting the whole content:

"content": {
  "additionalData": "data"
}

Are there any reasons not to merge the fields and dataProcessing? Or did I miss something and this is already possible? In line 131 in FriendsOfTYPO3\Headless\ContentObject\JsonContentObject the fields are always overwritten if dataProcessing exists. I'd be happy to create a PR if this is something to be considered. If there would be any side effects, maybe this could be allowed with an flag in the json content object?

Best regards David

twoldanski commented 1 year ago

Hi @dvdmlln, could you provide a PR?

dvdmlln commented 1 year ago

https://github.com/TYPO3-Headless/headless/pull/592

TypoScript would look like this:

tt_content.text {
    fields {
        content {
            merge = 1
            dataProcessing {
                10 = FriendsOfTYPO3\Headless\DataProcessing\FlexFormProcessor
                10 {
                    fieldName = pi_flexform
                    as = flexform
                }
            }
        }
    }
}