/**
  * Assigns multiple values to the JSON output.
  * However, only the key "value" is accepted.
  *
  * @param array $values Keys and values - only a value with key "value" is considered
  * @return Tx_Fluid_View_AbstractTemplateView the instance of this view to allow chaining
  * @author Robert Lemke <*****@*****.**>
  * @api
  */
 public function assignMultiple(array $values)
 {
     $templateVariableContainer = $this->baseRenderingContext->getTemplateVariableContainer();
     foreach ($values as $key => $value) {
         if ($templateVariableContainer->exists($key)) {
             $templateVariableContainer->remove($key);
         }
         $templateVariableContainer->add($key, $value);
     }
     return $this;
 }
 /**
  * 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;
 }
 /**
  * @test
  * @author Sebastian Kurfürst <*****@*****.**>
  */
 public function templateVariableContainerCanBeReadCorrectly()
 {
     $templateVariableContainer = $this->getMock('Tx_Fluid_Core_ViewHelper_TemplateVariableContainer');
     $this->renderingContext->setTemplateVariableContainer($templateVariableContainer);
     $this->assertSame($this->renderingContext->getTemplateVariableContainer(), $templateVariableContainer, 'Template Variable Container could not be read out again.');
 }