/** * @test */ public function renderUsesTheNodeArgumentIfSet() { $this->templateVariables = array('someProperty' => 'somePropertyValue'); $this->tagBuilder->expects($this->once())->method('render'); $this->injectDependenciesIntoViewHelper($this->editableViewHelper); $this->editableViewHelper->render('someProperty', 'div', $this->mockNode); }
/** * {@inheritdoc} */ public function render($property, $tag = 'div', NodeInterface $node = NULL) { if ($node === NULL) { $node = $this->getNodeFromTypoScriptContext(); } $propertyConfiguration = $node->getNodeType()->getProperties(); $properties = ObjectAccess::getPropertyPath($node, 'properties'); $dynamicPropertyPrefix = $this->settings['propertyPrefix']; // Add dynamic properties to context which are missing $addedProperties = array(); foreach ($propertyConfiguration as $propertyName => $propertyConfig) { if (strpos($propertyName, $dynamicPropertyPrefix) === 0 && !$this->templateVariableContainer->exists($propertyName)) { $value = array_key_exists($propertyName, $properties) ? $properties[$propertyName] : $propertyConfig['defaultValue']; $this->templateVariableContainer->add($propertyName, $value); $addedProperties[] = $propertyName; } } $output = parent::render($property, $tag, $node); // Remove dynamic properties again foreach ($addedProperties as $propertyName) { $this->templateVariableContainer->remove($propertyName); } return $output; }