protected parseRoute ( |
||
$collection |
/** * {@inheritDoc} */ protected function parseRoute(RouteCollection $collection, \DOMElement $node, $path) { // the Symfony Routing component uses a path attribute since Symfony 2.2 // instead of the deprecated pattern attribute0 if (!$node->hasAttribute('path')) { $node->setAttribute('path', $node->getAttribute('pattern')); $node->removeAttribute('pattern'); } if ($this->includeFormat) { $path = $node->getAttribute('path'); // append format placeholder if not present if (false === strpos($path, '{_format}')) { $node->setAttribute('path', $path . '.{_format}'); } // set format requirement if configured globally $requirements = $node->getElementsByTagNameNS(self::NAMESPACE_URI, 'requirement'); $format = null; for ($i = 0; $i < $requirements->length; $i++) { $item = $requirements->item($i); if ($item instanceof \DOMElement && $item->hasAttribute('_format')) { $format = $item->getAttribute('_format'); break; } } if (null === $format && !empty($this->formats)) { $requirement = $node->ownerDocument->createElementNs(self::NAMESPACE_URI, 'requirement', implode('|', array_keys($this->formats))); $requirement->setAttribute('key', '_format'); $node->appendChild($requirement); /*$doc =new \DOMDocument(); $doc->appendChild($doc->importNode($node, true)); echo $doc->saveHTML();*/ } } // set the default format if configured if (null !== $this->defaultFormat) { $config['defaults']['_format'] = $this->defaultFormat; $defaultFormatNode = $node->ownerDocument->createElementNS(self::NAMESPACE_URI, 'default', $this->defaultFormat); $defaultFormatNode->setAttribute('key', '_format'); $node->appendChild($defaultFormatNode); } parent::parseRoute($collection, $node, $path); }
/** * {@inheritdoc} */ protected function parseRoute(RouteCollection $collection, \DOMElement $node, $path) { if ($this->includeFormat) { $path = $node->getAttribute('path'); // append format placeholder if not present if (false === strpos($path, '{_format}')) { $node->setAttribute('path', $path . '.{_format}'); } // set format requirement if configured globally $requirements = $node->getElementsByTagNameNS(self::NAMESPACE_URI, 'requirement'); $format = null; for ($i = 0; $i < $requirements->length; ++$i) { $item = $requirements->item($i); if ($item instanceof \DOMElement && $item->hasAttribute('_format')) { $format = $item->getAttribute('_format'); break; } } if (null === $format && !empty($this->formats)) { $requirement = $node->ownerDocument->createElementNs(self::NAMESPACE_URI, 'requirement', implode('|', array_keys($this->formats))); $requirement->setAttribute('key', '_format'); $node->appendChild($requirement); } } // set the default format if configured if (null !== $this->defaultFormat) { $defaultFormatNode = $node->ownerDocument->createElementNS(self::NAMESPACE_URI, 'default', $this->defaultFormat); $defaultFormatNode->setAttribute('key', '_format'); $node->appendChild($defaultFormatNode); } $options = $this->getOptions($node); foreach ($options as $option) { $node->appendChild($option); } $length = $node->childNodes->length; for ($i = 0; $i < $length; ++$i) { $loopNode = $node->childNodes->item($i); if ($loopNode->nodeType == XML_TEXT_NODE) { continue; } $newNode = $node->ownerDocument->createElementNS(self::NAMESPACE_URI, $loopNode->nodeName, $loopNode->nodeValue); foreach ($loopNode->attributes as $value) { $newNode->setAttribute($value->name, $value->value); } $node->appendChild($newNode); } parent::parseRoute($collection, $node, $path); }