123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- <?php
-
-
-
- namespace Symfony\Bundle\AsseticBundle\Routing;
-
- use Assetic\Asset\AssetInterface;
- use Assetic\Factory\LazyAssetManager;
- use Symfony\Bundle\AsseticBundle\Config\AsseticResource;
- use Symfony\Component\Config\Loader\Loader;
- use Symfony\Component\Config\Resource\FileResource;
- use Symfony\Component\Routing\Route;
- use Symfony\Component\Routing\RouteCollection;
-
-
- class AsseticLoader extends Loader
- {
- protected $am;
-
- public function __construct(LazyAssetManager $am)
- {
- $this->am = $am;
- }
-
- public function load($routingResource, $type = null)
- {
- $routes = new RouteCollection();
-
-
- foreach ($this->am->getResources() as $resources) {
- if (!$resources instanceof \Traversable) {
- $resources = array($resources);
- }
- foreach ($resources as $resource) {
- $routes->addResource(new AsseticResource($resource));
- }
- }
-
-
- foreach ($this->am->getNames() as $name) {
- $asset = $this->am->get($name);
- $formula = $this->am->getFormula($name);
-
- $this->loadRouteForAsset($routes, $asset, $name);
-
- $debug = isset($formula[2]['debug']) ? $formula[2]['debug'] : $this->am->isDebug();
- $combine = isset($formula[2]['combine']) ? $formula[2]['combine'] : !$debug;
-
-
- if (!$combine) {
- $i = 0;
- foreach ($asset as $leaf) {
- $this->loadRouteForAsset($routes, $leaf, $name, $i++);
- }
- }
- }
-
- return $routes;
- }
-
-
-
- private function loadRouteForAsset(RouteCollection $routes, AssetInterface $asset, $name, $pos = null)
- {
- $defaults = array(
- '_controller' => 'assetic.controller:render',
- 'name' => $name,
- 'pos' => $pos,
- );
-
-
- $pattern = str_replace('_controller/', '', $asset->getTargetPath());
-
- if ($format = pathinfo($pattern, PATHINFO_EXTENSION)) {
- $defaults['_format'] = $format;
- }
-
- $route = '_assetic_'.$name;
- if (null !== $pos) {
- $route .= '_'.$pos;
- }
-
- $routes->add($route, new Route($pattern, $defaults));
- }
-
- public function supports($resource, $type = null)
- {
- return 'assetic' == $type;
- }
- }
|