FluidTYPO3 / flux

TYPO3 extension Flux: Dynamic Fluid FlexForms
https://fluidtypo3.org
148 stars 214 forks source link

Fatal Error in combination with EXT:mask and/or itemsProcFuncs #2132

Closed rfuehricht closed 10 months ago

rfuehricht commented 10 months ago

Hi!

I am currently upgrading a legacy project to TYPO3 v12 and noticed that EXT:flux and EXT:mask do not work together.

Mask adds some itemsProcFuncs to TCA. Flux breaks because it seems that it expects the Classes used to implement the FormDataProviderInterface of the core.

See Classes/Integration/MultipleItemsProcFunc.php:

public function execute(array &$parameters, FormDataProviderInterface $formDataProvider): void

Why those classes must implement FormDataProviderInterface? AFAIK, this is not expected by TYPO3 Core, at least the examples here do not state that:

https://docs.typo3.org/m/typo3/reference-tca/main/en-us/ColumnsConfig/CommonProperties/ItemsProcFunc.html#tca-property-itemsprocfunc

Kind regards, Reinhard

NamelessCoder commented 10 months ago

Flux expects that the caller of the class is an instance of FormDataProviderInterface which it is, when called from the TYPO3 core. If this method does not receive an instance of that interface as second argument, then the replacement implementation that is calling the method is doing so in an incompatible way and it would break any implementation - not just the one in Flux - if that implementation uses strict types like Flux does.

You're welcome to provide more background information about this, such as the specific error, but I'm almost certain that the problem is EXT:mask - not Flux. In order to be correctly compatible, EXT:mask should be passing the second argument that it gets for its itemsProcFunc, as second argument to any itemsProcFunc it calls after that.

rfuehricht commented 10 months ago

Your explanation is totally correct.

I will ask for a fix in EXT:mask then.

Thank you very much for the quick answer.

NamelessCoder commented 10 months ago

Fixed in EXT:mask.