Story #69617: FormEngine bugs
TcaFlexFetch::initializeDataStructure should not throw an exception
When using TemplaVoilà the pages records get an additional field tx_templavoila_flex, which is by default configured to fetch a datastructure (flexform) from another table.
When creating a completely new table, there is no foreign record available because the field ds_pointerField tx_templavoila_ds is empty or 0.
However, \TYPO3\CMS\Backend\Utility\BackendUtility::getFlexFormDS cannot resolve the flexform array, thus leading to exception 1440506893.
There is a comment in the code:
// If data structure can't be parsed, this is a developer error, so throw a non catchable exception
Unfortunately this is not true during the process of creating records like new pages. In that case, the edit mask should still be available, so the admin or editor can properly configure the datastructure, so in the next step the flexform can be resolved.
#2 Updated by J. Peter M. Schuler about 2 years ago
Agreed - but shouldn't this specific problem be fixed nevertheless?
Because the DS here is discoverable in most situations (although not in all).
In the case you mentioned, BackendUtility::getFlexFormDS searching for the correct record replaces $row (which has the pid) with $rr - but wie uids like NEWxyz $rr returns always null.
So using $row[$ds_searchParentField] instead of $rr[$ds_searchParentField] could help (at least if $rr is null).
Perhabs on the other hand TYPO3\CMS\Backend\Form\FormDataProvider should be corrected and call BackendUtility::getFlexFormDS with the parameter $newRecordPidValue.