/** * Sets up this test case * * @return void */ public function setUp() { $this->view = $this->getAccessibleMock('Tx_Fluid_View_StandaloneView', array('dummy'), array(), '', FALSE); $this->mockTemplateParser = $this->getMock('Tx_Fluid_Core_Parser_TemplateParser'); $this->mockParsedTemplate = $this->getMock('Tx_Fluid_Core_Parser_ParsedTemplateInterface'); $this->mockTemplateParser->expects($this->any())->method('parse')->will($this->returnValue($this->mockParsedTemplate)); $this->mockConfigurationManager = $this->getMock('Tx_Extbase_Configuration_ConfigurationManagerInterface'); $this->mockObjectManager = $this->getMock('Tx_Extbase_Object_ObjectManager'); $this->mockObjectManager->expects($this->any())->method('get')->will($this->returnCallback(array($this, 'objectManagerCallback'))); $this->mockObjectManager->expects($this->any())->method('create')->will($this->returnCallback(array($this, 'objectManagerCallback'))); $this->mockRequest = $this->getMock('Tx_Extbase_MVC_Web_Request'); $this->mockUriBuilder = $this->getMock('Tx_Extbase_MVC_Web_Routing_UriBuilder'); $this->mockFlashMessages = $this->getMock('Tx_Extbase_MVC_Controller_FlashMessages'); $this->mockContentObject = $this->getMock('tslib_cObj'); $this->mockControllerContext = $this->getMock('Tx_Extbase_MVC_Controller_ControllerContext'); $this->mockControllerContext->expects($this->any())->method('getRequest')->will($this->returnValue($this->mockRequest)); $this->mockViewHelperVariableContainer = $this->getMock('Tx_Fluid_Core_ViewHelper_ViewHelperVariableContainer'); $this->mockRenderingContext = $this->getMock('Tx_Fluid_Core_Rendering_RenderingContextInterface'); $this->mockRenderingContext->expects($this->any())->method('getControllerContext')->will($this->returnValue($this->mockControllerContext)); $this->mockRenderingContext->expects($this->any())->method('getViewHelperVariableContainer')->will($this->returnValue($this->mockViewHelperVariableContainer)); $this->view->injectTemplateParser($this->mockTemplateParser); $this->view->injectObjectManager($this->mockObjectManager); $this->view->setRenderingContext($this->mockRenderingContext); t3lib_div::setSingletonInstance('Tx_Extbase_Object_ObjectManager', $this->mockObjectManager); t3lib_div::addInstance('tslib_cObj', $this->mockContentObject); }
/** * Loads the template source and render the template. * If "layoutName" is set in a PostParseFacet callback, it will render the file with the given layout. * * @param string $actionName If set, the view of the specified action will be rendered instead. Default is the action specified in the Request object * @return string Rendered Template * @author Sebastian Kurfürst <*****@*****.**> * @author Robert Lemke <*****@*****.**> * @api */ public function render($actionName = NULL) { $this->baseRenderingContext->setControllerContext($this->controllerContext); $this->templateParser->setConfiguration($this->buildParserConfiguration()); $parsedTemplate = $this->templateParser->parse($this->getTemplateSource($actionName)); if ($this->isLayoutDefinedInTemplate($parsedTemplate)) { $this->startRendering(self::RENDERING_LAYOUT, $parsedTemplate, $this->baseRenderingContext); $parsedLayout = $this->templateParser->parse($this->getLayoutSource($this->getLayoutNameInTemplate($parsedTemplate))); $output = $parsedLayout->render($this->baseRenderingContext); $this->stopRendering(); } else { $this->startRendering(self::RENDERING_TEMPLATE, $parsedTemplate, $this->baseRenderingContext); $output = $parsedTemplate->render($this->baseRenderingContext); $this->stopRendering(); } return $output; }
/** * Call the view helper associated with this object. * * First, it evaluates the arguments of the view helper. * * If the view helper implements Tx_Fluid_Core_ViewHelper_Facets_ChildNodeAccessInterface, * it calls setChildNodes(array childNodes) on the view helper. * * Afterwards, checks that the view helper did not leave a variable lying around. * * @param Tx_Fluid_Core_Rendering_RenderingContextInterface $renderingContext * @return object evaluated node after the view helper has been called. * @author Sebastian Kurfürst <*****@*****.**> * @author Karsten Dambekalns <*****@*****.**> * @todo check recreation of viewhelper when revisiting caching */ public function evaluate(Tx_Fluid_Core_Rendering_RenderingContextInterface $renderingContext) { $objectManager = $renderingContext->getObjectManager(); $contextVariables = $renderingContext->getTemplateVariableContainer()->getAllIdentifiers(); if ($this->viewHelpersByContext->contains($renderingContext)) { $viewHelper = $this->viewHelpersByContext[$renderingContext]; } else { $viewHelper = clone $this->uninitializedViewHelper; $this->viewHelpersByContext->attach($renderingContext, $viewHelper); } $evaluatedArguments = array(); $renderMethodParameters = array(); if (count($viewHelper->prepareArguments())) { foreach ($viewHelper->prepareArguments() as $argumentName => $argumentDefinition) { if (isset($this->arguments[$argumentName])) { $argumentValue = $this->arguments[$argumentName]; $evaluatedArguments[$argumentName] = $this->convertArgumentValue($argumentValue, $argumentDefinition->getType(), $renderingContext); } else { $evaluatedArguments[$argumentName] = $argumentDefinition->getDefaultValue(); } if ($argumentDefinition->isMethodParameter()) { $renderMethodParameters[$argumentName] = $evaluatedArguments[$argumentName]; } } } $viewHelperArguments = $objectManager->create('Tx_Fluid_Core_ViewHelper_Arguments', $evaluatedArguments); $viewHelper->setArguments($viewHelperArguments); $viewHelper->setTemplateVariableContainer($renderingContext->getTemplateVariableContainer()); if ($renderingContext->getControllerContext() !== NULL) { $viewHelper->setControllerContext($renderingContext->getControllerContext()); } $viewHelper->setViewHelperVariableContainer($renderingContext->getViewHelperVariableContainer()); $viewHelper->setViewHelperNode($this); $viewHelper->setRenderingContext($renderingContext); if ($viewHelper instanceof Tx_Fluid_Core_ViewHelper_Facets_ChildNodeAccessInterface) { $viewHelper->setChildNodes($this->childNodes); } $output = $viewHelper->initializeArgumentsAndRender($renderMethodParameters); return $output; }
/** * @param Tx_Fluid_Core_Rendering_RenderingContextInterface $context * @param mixed $var * @return boolean */ protected function determineBooleanOf($context, $var) { if ($context->getViewHelperVariableContainer()->exists('Tx_Vhs_ViewHelpers_SwitchViewHelper', $var)) { return $context->getViewHelperVariableContainer()->get('Tx_Vhs_ViewHelpers_SwitchViewHelper', $var); } return FALSE; }
/** * @test * @author Sebastian Kurfürst <*****@*****.**> */ public function viewHelperVariableContainerCanBeReadCorrectly() { $viewHelperVariableContainer = $this->getMock('Tx_Fluid_Core_ViewHelper_ViewHelperVariableContainer'); $this->renderingContext->setViewHelperVariableContainer($viewHelperVariableContainer); $this->assertSame($viewHelperVariableContainer, $this->renderingContext->getViewHelperVariableContainer()); }