[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
* @var array
*/
protected $routing_paths;
protected $routing_files;
/**
* 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
*/
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
// 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')
->prefix('routing')
->suffix('yml')
->suffix('.yml')
->find()
)));
));
return $this;
}
@ -73,10 +73,14 @@ class provider
public function find($base_path = '')
{
$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));
$routes->addCollection($loader->load('routing.yml'));
$routes->addCollection($loader->load($file_name));
}
return $routes;