Skip to content

Commit

Permalink
Use proper class to fetch $versionStrategy property
Browse files Browse the repository at this point in the history
  • Loading branch information
dosten authored and fabpot committed Jan 7, 2016
1 parent 19da185 commit e38fa13
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 9 deletions.
9 changes: 3 additions & 6 deletions src/Symfony/Bridge/Twig/Extension/AssetExtension.php
Expand Up @@ -98,19 +98,16 @@ private function getLegacyAssetUrl($path, $packageName = null, $absolute = false
{
if ($version) {
$package = $this->packages->getPackage($packageName);
$class = new \ReflectionClass($package);

while ('Symfony\Component\Asset\Package' !== $class->getName()) {
$class = $class->getParentClass();
}

$v = $class->getProperty('versionStrategy');
$v = new \ReflectionProperty('Symfony\Component\Asset\Package', 'versionStrategy');
$v->setAccessible(true);

$currentVersionStrategy = $v->getValue($package);

if (property_exists($currentVersionStrategy, 'format')) {
$f = new \ReflectionProperty($currentVersionStrategy, 'format');
$f->setAccessible(true);

$format = $f->getValue($currentVersionStrategy);

$v->setValue($package, new StaticVersionStrategy($version, $format));
Expand Down
Expand Up @@ -95,13 +95,14 @@ private function getLegacyAssetUrl($path, $packageName = null, $version = null)
if ($version) {
$package = $this->packages->getPackage($packageName);

$v = new \ReflectionProperty($package, 'versionStrategy');
$v = new \ReflectionProperty('Symfony\Component\Asset\Package', 'versionStrategy');
$v->setAccessible(true);

$currentVersionStrategy = $v->getValue($package);

$f = new \ReflectionProperty($currentVersionStrategy, 'format');
$f->setAccessible(true);

$format = $f->getValue($currentVersionStrategy);

$v->setValue($package, new StaticVersionStrategy($version, $format));
Expand Down
Expand Up @@ -14,6 +14,7 @@
use Symfony\Bundle\FrameworkBundle\Templating\Helper\AssetsHelper;
use Symfony\Component\Asset\Package;
use Symfony\Component\Asset\Packages;
use Symfony\Component\Asset\PathPackage;
use Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy;

class AssetsHelperTest extends \PHPUnit_Framework_TestCase
Expand All @@ -23,11 +24,14 @@ class AssetsHelperTest extends \PHPUnit_Framework_TestCase
*/
public function testLegacyGetUrl()
{
$package = new Package(new StaticVersionStrategy('22', '%s?version=%s'));
$packages = new Packages($package);
$versionStrategy = new StaticVersionStrategy('22', '%s?version=%s');
$package = new Package($versionStrategy);
$imagePackage = new PathPackage('images', $versionStrategy);
$packages = new Packages($package, array('images' => $imagePackage));
$helper = new AssetsHelper($packages);

$this->assertEquals('me.png?version=42', $helper->getUrl('me.png', null, '42'));
$this->assertEquals('/images/me.png?version=42', $helper->getUrl('me.png', 'images', '42'));
}

/**
Expand Down

0 comments on commit e38fa13

Please sign in to comment.