diff --git a/Classes/Utils/DummyView.php b/Classes/Utils/DummyView.php index ca39d9b..896efa1 100644 --- a/Classes/Utils/DummyView.php +++ b/Classes/Utils/DummyView.php @@ -6,6 +6,7 @@ namespace DigiComp\FluidRenderFunctions\Utils; use TYPO3Fluid\Fluid\View\ViewInterface; +// @deprecated: drop this class, as soon as Flow 6.3 support drops class DummyView implements ViewInterface { public function assign($key, $value) diff --git a/Classes/Utils/NodeRenderTransfer.php b/Classes/Utils/NodeRenderTransfer.php index 068d605..213c0be 100644 --- a/Classes/Utils/NodeRenderTransfer.php +++ b/Classes/Utils/NodeRenderTransfer.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace DigiComp\FluidRenderFunctions\Utils; use DigiComp\FluidRenderFunctions\InvokeRenderFunctionInterface; +use Neos\Flow\ObjectManagement\Proxy\ProxyInterface; use Neos\FluidAdaptor\Core\Rendering\RenderingContext; use TYPO3Fluid\Fluid\Core\Parser\SyntaxTree\NodeInterface; @@ -28,7 +29,22 @@ class NodeRenderTransfer implements InvokeRenderFunctionInterface public function __invoke($object): string { - $context = new RenderingContext(new DummyView()); + // @deprecated: drop the condition, if compatibility to Flow 6.3 can be dropped + $reflector = new \ReflectionClass(RenderingContext::class); + if ($reflector->implementsInterface(ProxyInterface::class)) { + try { + $reflector = new \ReflectionClass($reflector->getParentClass()->getName()); + } catch (\Exception $e) { + // nothing, go with the first one + } + } + $constructor = $reflector->getConstructor(); + + if ($constructor->getNumberOfRequiredParameters() > 0) { + $context = new RenderingContext(new DummyView()); + } else { + $context = new RenderingContext(); + } $context->getVariableProvider()->add($this->subjectName, $object); return \trim($this->node->evaluate($context)); }