2 declare(strict_types = 1);
21 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
22 use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
23 use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
24 use TYPO3Fluid\Fluid\Core\ViewHelper\ViewHelperVariableContainer;
25 use TYPO3Fluid\Fluid\View\Exception;
46 use CompileWithRenderStatic;
55 $this->registerArgument(
'identifier',
'string',
'Identifier of the menu',
true);
66 \Closure $renderChildrenClosure,
67 RenderingContextInterface $renderingContext
69 $viewHelperVariableContainer = $renderingContext->getViewHelperVariableContainer();
73 $moduleTemplate = $viewHelperVariableContainer->get(ModuleLayoutViewHelper::class, ModuleTemplate::class);
74 $menu = $moduleTemplate->getDocHeaderComponent()->getMenuRegistry()->makeMenu();
75 $menu->setIdentifier($arguments[
'identifier']);
77 $viewHelperVariableContainer->add(ModuleLayoutViewHelper::class, Menu::class, $menu);
78 $renderChildrenClosure();
79 $moduleTemplate->getDocHeaderComponent()->getMenuRegistry()->addMenu($menu);
80 $viewHelperVariableContainer->remove(ModuleLayoutViewHelper::class, Menu::class);
87 private static function ensureProperNesting(ViewHelperVariableContainer $viewHelperVariableContainer):
void
89 if (!$viewHelperVariableContainer->exists(ModuleLayoutViewHelper::class, ModuleTemplate::class)) {
90 throw new Exception(sprintf(
'%s must be nested in <f.be.moduleLayout> ViewHelper', self::class), 1531235715);
92 if ($viewHelperVariableContainer->exists(ModuleLayoutViewHelper::class, Menu::class)) {
93 throw new Exception(sprintf(
'%s can not be nested in <f.be.moduleLayout.menu> ViewHelper', self::class), 1531235777);