[AsseticBundle] fixed router and controller
This commit is contained in:
parent
6a227f858a
commit
57dd6aef86
@ -12,6 +12,7 @@
|
|||||||
namespace Symfony\Bundle\AsseticBundle\Controller;
|
namespace Symfony\Bundle\AsseticBundle\Controller;
|
||||||
|
|
||||||
use Assetic\Asset\AssetCache;
|
use Assetic\Asset\AssetCache;
|
||||||
|
use Assetic\Asset\AssetInterface;
|
||||||
use Assetic\Factory\LazyAssetManager;
|
use Assetic\Factory\LazyAssetManager;
|
||||||
use Assetic\Cache\CacheInterface;
|
use Assetic\Cache\CacheInterface;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
@ -42,13 +43,9 @@ class AsseticController
|
|||||||
throw new NotFoundHttpException(sprintf('The "%s" asset could not be found.', $name));
|
throw new NotFoundHttpException(sprintf('The "%s" asset could not be found.', $name));
|
||||||
}
|
}
|
||||||
|
|
||||||
$asset = $this->getAsset($name);
|
$asset = $this->am->get($name);
|
||||||
if (null !== $pos) {
|
if (null !== $pos && !$asset = $this->findAssetLeaf($asset, $pos)) {
|
||||||
$leaves = array_values(iterator_to_array($asset));
|
throw new NotFoundHttpException(sprintf('The "%s" asset does not include a leaf at position %d.', $name, $pos));
|
||||||
if (!isset($leaves[$pos])) {
|
|
||||||
throw new NotFoundHttpException(sprintf('The "%s" asset does not include a leaf at position %d.', $name, $pos));
|
|
||||||
}
|
|
||||||
$asset = $leaves[$pos];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$response = $this->createResponse();
|
$response = $this->createResponse();
|
||||||
@ -71,7 +68,7 @@ class AsseticController
|
|||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
$response->setContent($asset->dump());
|
$response->setContent($this->cachifyAsset($asset)->dump());
|
||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
@ -81,8 +78,17 @@ class AsseticController
|
|||||||
return new Response();
|
return new Response();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getAsset($name)
|
protected function cachifyAsset(AssetInterface $asset)
|
||||||
{
|
{
|
||||||
return new AssetCache($this->am->get($name), $this->cache);
|
return new AssetCache($asset, $this->cache);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function findAssetLeaf(AssetInterface $asset, $pos)
|
||||||
|
{
|
||||||
|
$leaves = array_values(iterator_to_array($asset));
|
||||||
|
|
||||||
|
if (isset($leaves[$pos])) {
|
||||||
|
return $leaves[$pos];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,8 +71,7 @@ class AsseticLoader extends Loader
|
|||||||
if (isset($formula[2]['debug']) ? $formula[2]['debug'] : $this->am->isDebug()) {
|
if (isset($formula[2]['debug']) ? $formula[2]['debug'] : $this->am->isDebug()) {
|
||||||
$i = 0;
|
$i = 0;
|
||||||
foreach ($asset as $leaf) {
|
foreach ($asset as $leaf) {
|
||||||
$pos = $i++;
|
$this->loadRouteForAsset($routes, $leaf, $name, $i++);
|
||||||
$this->loadRouteForAsset($routes, $leaf, $name.'_'.$pos, $pos);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -106,7 +105,12 @@ class AsseticLoader extends Loader
|
|||||||
$defaults['_format'] = $format;
|
$defaults['_format'] = $format;
|
||||||
}
|
}
|
||||||
|
|
||||||
$routes->add('_assetic_'.$name, new Route($pattern, $defaults));
|
$route = '_assetic_'.$name;
|
||||||
|
if (null !== $pos) {
|
||||||
|
$route .= '_'.$pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
$routes->add($route, new Route($pattern, $defaults));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function supports($resource, $type = null)
|
public function supports($resource, $type = null)
|
||||||
|
Reference in New Issue
Block a user