diff --git a/src/Symfony/Bundle/AsseticBundle/Factory/AssetFactory.php b/src/Symfony/Bundle/AsseticBundle/Factory/AssetFactory.php
index f13b368f1021..85f73245cb7c 100644
--- a/src/Symfony/Bundle/AsseticBundle/Factory/AssetFactory.php
+++ b/src/Symfony/Bundle/AsseticBundle/Factory/AssetFactory.php
@@ -13,6 +13,7 @@
use Assetic\Factory\AssetFactory as BaseAssetFactory;
use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpKernel\KernelInterface;
/**
@@ -24,31 +25,36 @@ class AssetFactory extends BaseAssetFactory
{
private $kernel;
private $container;
+ private $parameterBag;
/**
* Constructor.
*
- * @param KernelInterface $kernel The kernel is used to parse bundle notation
- * @param ContainerInterface $container The container is used to load the managers lazily, thus avoiding a circular dependency
- * @param string $baseDir The base directory for relative inputs
- * @param Boolean $debug The current debug mode
+ * @param KernelInterface $kernel The kernel is used to parse bundle notation
+ * @param ContainerInterface $container The container is used to load the managers lazily, thus avoiding a circular dependency
+ * @param ParameterBagInterface $parameterBag The container parameter bag
+ * @param string $baseDir The base directory for relative inputs
+ * @param Boolean $debug The current debug mode
*/
- public function __construct(KernelInterface $kernel, ContainerInterface $container, $baseDir, $debug = false)
+ public function __construct(KernelInterface $kernel, ContainerInterface $container, ParameterBagInterface $parameterBag, $baseDir, $debug = false)
{
$this->kernel = $kernel;
$this->container = $container;
+ $this->parameterBag = $parameterBag;
parent::__construct($baseDir, $debug);
}
/**
- * Adds support for bundle notation file and glob assets.
+ * Adds support for bundle notation file and glob assets and parameter placeholders.
*
* FIXME: This is a naive implementation of globs in that it doesn't
* attempt to support bundle inheritance within the glob pattern itself.
*/
protected function parseInput($input, array $options = array())
{
+ $input = $this->parameterBag->resolveValue($input);
+
// expand bundle notation
if ('@' == $input[0] && false !== strpos($input, '/')) {
// use the bundle path as this asset's root
diff --git a/src/Symfony/Bundle/AsseticBundle/Resources/config/assetic.xml b/src/Symfony/Bundle/AsseticBundle/Resources/config/assetic.xml
index c51ac1795b72..d2fa71d9e19e 100644
--- a/src/Symfony/Bundle/AsseticBundle/Resources/config/assetic.xml
+++ b/src/Symfony/Bundle/AsseticBundle/Resources/config/assetic.xml
@@ -35,6 +35,7 @@
+
%assetic.read_from%
%assetic.debug%
@@ -60,5 +61,11 @@
+
+
+
+
+
+
diff --git a/src/Symfony/Bundle/AsseticBundle/Tests/Factory/AssetFactoryTest.php b/src/Symfony/Bundle/AsseticBundle/Tests/Factory/AssetFactoryTest.php
index f94fa9856975..89f2f9e9d340 100644
--- a/src/Symfony/Bundle/AsseticBundle/Tests/Factory/AssetFactoryTest.php
+++ b/src/Symfony/Bundle/AsseticBundle/Tests/Factory/AssetFactoryTest.php
@@ -27,7 +27,8 @@ protected function setUp()
$this->kernel = $this->getMock('Symfony\\Component\\HttpKernel\\KernelInterface');
$this->container = $this->getMock('Symfony\\Component\\DependencyInjection\\ContainerInterface');
- $this->factory = new AssetFactory($this->kernel, $this->container, '/path/to/web');
+ $this->parameterBag = $this->getMock('Symfony\\Component\\DependencyInjection\\ParameterBag\\ParameterBagInterface');
+ $this->factory = new AssetFactory($this->kernel, $this->container, $this->parameterBag, '/path/to/web');
}
public function testBundleNotation()
@@ -35,6 +36,9 @@ public function testBundleNotation()
$input = '@MyBundle/Resources/css/main.css';
$bundle = $this->getMock('Symfony\\Component\\HttpKernel\\Bundle\\BundleInterface');
+ $this->parameterBag->expects($this->once())
+ ->method('resolveValue')
+ ->will($this->returnCallback(function($v) { return $v; }));
$this->kernel->expects($this->once())
->method('getBundle')
->with('MyBundle')
@@ -61,6 +65,9 @@ public function testBundleGlobNotation($input)
{
$bundle = $this->getMock('Symfony\\Component\\HttpKernel\\Bundle\\BundleInterface');
+ $this->parameterBag->expects($this->once())
+ ->method('resolveValue')
+ ->will($this->returnCallback(function($v) { return $v; }));
$this->kernel->expects($this->once())
->method('getBundle')
->with('MyBundle')