-
Notifications
You must be signed in to change notification settings - Fork 10
/
RouteLoader.php
65 lines (52 loc) · 1.88 KB
/
RouteLoader.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
/*
* This file is part of the LyraAdminBundle package.
*
* Copyright 2011-2012 Massimo Giagnoni <gimassimo@gmail.com>
*
* This source file is subject to the MIT license. Full copyright and license
* information are in the LICENSE file distributed with this source code.
*/
namespace Lyra\AdminBundle\Routing;
use Symfony\Component\Config\Loader\FileLoader;
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
use Symfony\Component\Config\Resource\FileResource;
/**
* Admin routes loader.
*/
class RouteLoader extends FileLoader
{
protected $options;
protected $cacheDir;
public function __construct($options, $cacheDir)
{
$this->options = $options;
$this->cacheDir = $cacheDir;
}
public function load($resource, $type = null)
{
$collection = new RouteCollection();
foreach ($this->options['models'] as $model => $options) {
foreach ($options['actions'] as $action => $actionOpts) {
if (!isset($actionOpts['route_pattern'])) {
continue;
}
$defaults = array_merge(array(
'_controller' => $options['controller'].':'.$action,
'lyra_admin_model' => $model,
'lyra_admin_action' => $action
), $actionOpts['route_defaults']);
$route = new Route('/'.$this->options['route_pattern_prefix'].'/'.$options['route_pattern_prefix'].'/'.$actionOpts['route_pattern'], $defaults);
$collection->add($options['route_prefix'].'_'.$action, $route);
}
}
$resource = new FileResource($this->cacheDir.'/lyra_admin.routes.meta');
$collection->addResource($resource);
return $collection;
}
public function supports($resource, $type = null)
{
return 'lyra_admin' == $type;
}
}