[ticket/11948] Allow multiple routing files for extensions

PHPBB3-11948
This commit is contained in:
Joas Schilling 2013-10-19 12:12:14 +02:00
parent 3cc2e619d2
commit d45582d32a

View file

@ -31,17 +31,17 @@ class provider
* YAML file(s) containing route information * YAML file(s) containing route information
* @var array * @var array
*/ */
protected $routing_paths; protected $routing_files;
/** /**
* Construct method * Construct method
* *
* @param array() $routing_paths Array of strings containing paths * @param array() $routing_files Array of strings containing paths
* to YAML files holding route information * to YAML files holding route information
*/ */
public function __construct($routing_paths = array()) public function __construct($routing_files = array())
{ {
$this->routing_paths = $routing_paths; $this->routing_files = $routing_files;
} }
/** /**
@ -54,12 +54,12 @@ class provider
{ {
// We hardcode the path to the core config directory // We hardcode the path to the core config directory
// because the finder cannot find it // because the finder cannot find it
$this->routing_paths = array_merge(array('config'), array_map('dirname', array_keys($finder $this->routing_files = array_merge(array('config/routing.yml'), array_keys($finder
->directory('config') ->directory('config')
->prefix('routing') ->prefix('routing')
->suffix('yml') ->suffix('.yml')
->find() ->find()
))); ));
return $this; return $this;
} }
@ -73,10 +73,14 @@ class provider
public function find($base_path = '') public function find($base_path = '')
{ {
$routes = new RouteCollection; $routes = new RouteCollection;
foreach ($this->routing_paths as $path) foreach ($this->routing_files as $file_path)
{ {
$path_info = explode('/', $file_path);
$file_name = array_pop($path_info);
$path = implode('/', $path_info) . '/';
$loader = new YamlFileLoader(new FileLocator($base_path . $path)); $loader = new YamlFileLoader(new FileLocator($base_path . $path));
$routes->addCollection($loader->load('routing.yml')); $routes->addCollection($loader->load($file_name));
} }
return $routes; return $routes;