/** * Save the associated view helper node in a static public class variable. * called directly after the view helper was built. * * @param \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\ViewHelperNode $syntaxTreeNode * @param array $viewHelperArguments * @param \TYPO3\CMS\Fluid\Core\ViewHelper\TemplateVariableContainer $variableContainer * @return void */ public static function postParseEvent(\TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\ViewHelperNode $syntaxTreeNode, array $viewHelperArguments, \TYPO3\CMS\Fluid\Core\ViewHelper\TemplateVariableContainer $variableContainer) { $sectionName = $viewHelperArguments['name']->getText(); if (!$variableContainer->exists('sections')) { $variableContainer->add('sections', array()); } $sections = $variableContainer->get('sections'); $sections[$sectionName] = $syntaxTreeNode; $variableContainer->remove('sections'); $variableContainer->add('sections', $sections); }
/** * On the post parse event, add the "layoutName" variable to the variable container so it can be used by the TemplateView. * * @param \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\ViewHelperNode $syntaxTreeNode * @param array $viewHelperArguments * @param \TYPO3\CMS\Fluid\Core\ViewHelper\TemplateVariableContainer $variableContainer * @return void */ public static function postParseEvent(\TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\ViewHelperNode $syntaxTreeNode, array $viewHelperArguments, \TYPO3\CMS\Fluid\Core\ViewHelper\TemplateVariableContainer $variableContainer) { if (isset($viewHelperArguments['name'])) { $layoutNameNode = $viewHelperArguments['name']; } else { $layoutNameNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\TextNode('Default'); } $variableContainer->add('layoutName', $layoutNameNode); }
/** * Restores $variables in $variableContainer * * @param TemplateVariableContainer $variableContainer * @param array $variables * @param array $backups * @return void */ public static function restoreVariables(TemplateVariableContainer $variableContainer, array $variables, array $backups) { foreach ($variables as $variableName => $variableValue) { $variableContainer->remove($variableName); if (TRUE === isset($backups[$variableName])) { $variableContainer->add($variableName, $variableValue); } } }
/** * @param array $variables * @param array $backups * @param \TYPO3\CMS\Fluid\Core\ViewHelper\TemplateVariableContainer $templateVariableContainer * @return void */ private static function restoreVariables(array $variables, array $backups, $templateVariableContainer) { foreach ($variables as $variableName => $variableValue) { $templateVariableContainer->remove($variableName); if (true === isset($backups[$variableName])) { $templateVariableContainer->add($variableName, $variableValue); } } }
/** * @test * @expectedException \TYPO3\CMS\Fluid\Core\ViewHelper\Exception\InvalidVariableException */ public function addingVariableNamedAllShouldThrowException() { $this->variableContainer->add('_all', 'foo'); }