/** * Compiles the Element node * * @param Compiler $compiler * @param \DOMElement $node * @param UiComponentInterface $component * @param Object $context * @return void */ public function compile(Compiler $compiler, \DOMElement $node, UiComponentInterface $component, Object $context) { $name = $node->getAttribute('name'); $content = (string) $component->renderChildComponent($name); $name .= '_' . sprintf('%x', crc32(spl_object_hash($context))); if (!empty($content)) { $compiler->setPostprocessingData($name, $content); $newNode = $node->ownerDocument->createTextNode(Compiler::PATTERN_TAG . $name . Compiler::PATTERN_TAG); $node->parentNode->replaceChild($newNode, $node); } else { $node->parentNode->removeChild($node); } }
/** * Compiles the Element node * * @param Compiler $compiler * @param \DOMElement $node * @param UiComponentInterface $component * @param Object $context * @return void */ public function compile(Compiler $compiler, \DOMElement $node, UiComponentInterface $component, Object $context) { $result = $component->renderChildComponent($node->getAttribute('name')); if ($result instanceof Result) { $node->parentNode->replaceChild($result->getDocumentElement(), $node); } else { if (!empty($result) && is_scalar($result)) { $newFragment = $node->ownerDocument->createDocumentFragment(); $newFragment->appendXML($result); $node->parentNode->replaceChild($newFragment, $node); $node->parentNode->removeChild($node); } else { $node->parentNode->removeChild($node); } } }