protected function XmlFileLoader::parseRoute in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/symfony/routing/Loader/XmlFileLoader.php \Symfony\Component\Routing\Loader\XmlFileLoader::parseRoute()
Parses a route and adds it to the RouteCollection.
Parameters
RouteCollection $collection RouteCollection instance:
\DOMElement $node Element to parse that represents a Route:
string $path Full path of the XML file being processed:
Throws
\InvalidArgumentException When the XML is invalid
1 call to XmlFileLoader::parseRoute()
- XmlFileLoader::parseNode in vendor/symfony/ routing/ Loader/ XmlFileLoader.php 
- Parses a node from a loaded XML file.
File
- vendor/symfony/ routing/ Loader/ XmlFileLoader.php, line 108 
Class
- XmlFileLoader
- XmlFileLoader loads XML routing files.
Namespace
Symfony\Component\Routing\LoaderCode
protected function parseRoute(RouteCollection $collection, \DOMElement $node, $path) {
  if ('' === ($id = $node
    ->getAttribute('id')) || !$node
    ->hasAttribute('pattern') && !$node
    ->hasAttribute('path')) {
    throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" must have an "id" and a "path" attribute.', $path));
  }
  if ($node
    ->hasAttribute('pattern')) {
    if ($node
      ->hasAttribute('path')) {
      throw new \InvalidArgumentException(sprintf('The <route> element in file "%s" cannot define both a "path" and a "pattern" attribute. Use only "path".', $path));
    }
    @trigger_error(sprintf('The "pattern" option in file "%s" is deprecated since version 2.2 and will be removed in 3.0. Use the "path" option in the route definition instead.', $path), E_USER_DEPRECATED);
    $node
      ->setAttribute('path', $node
      ->getAttribute('pattern'));
    $node
      ->removeAttribute('pattern');
  }
  $schemes = preg_split('/[\\s,\\|]++/', $node
    ->getAttribute('schemes'), -1, PREG_SPLIT_NO_EMPTY);
  $methods = preg_split('/[\\s,\\|]++/', $node
    ->getAttribute('methods'), -1, PREG_SPLIT_NO_EMPTY);
  list($defaults, $requirements, $options, $condition) = $this
    ->parseConfigs($node, $path);
  if (isset($requirements['_method'])) {
    if (0 === count($methods)) {
      $methods = explode('|', $requirements['_method']);
    }
    unset($requirements['_method']);
    @trigger_error(sprintf('The "_method" requirement of route "%s" in file "%s" is deprecated since version 2.2 and will be removed in 3.0. Use the "methods" attribute instead.', $id, $path), E_USER_DEPRECATED);
  }
  if (isset($requirements['_scheme'])) {
    if (0 === count($schemes)) {
      $schemes = explode('|', $requirements['_scheme']);
    }
    unset($requirements['_scheme']);
    @trigger_error(sprintf('The "_scheme" requirement of route "%s" in file "%s" is deprecated since version 2.2 and will be removed in 3.0. Use the "schemes" attribute instead.', $id, $path), E_USER_DEPRECATED);
  }
  $route = new Route($node
    ->getAttribute('path'), $defaults, $requirements, $options, $node
    ->getAttribute('host'), $schemes, $methods, $condition);
  $collection
    ->add($id, $route);
}