Use proper class to fetch $versionStrategy property

This commit is contained in:
Diego Saint Esteben 2016-01-07 14:13:41 -03:00 committed by Fabien Potencier
parent 19da1850f6
commit e38fa135ab
3 changed files with 11 additions and 9 deletions

View File

@ -98,19 +98,16 @@ class AssetExtension extends \Twig_Extension
{ {
if ($version) { if ($version) {
$package = $this->packages->getPackage($packageName); $package = $this->packages->getPackage($packageName);
$class = new \ReflectionClass($package);
while ('Symfony\Component\Asset\Package' !== $class->getName()) { $v = new \ReflectionProperty('Symfony\Component\Asset\Package', 'versionStrategy');
$class = $class->getParentClass();
}
$v = $class->getProperty('versionStrategy');
$v->setAccessible(true); $v->setAccessible(true);
$currentVersionStrategy = $v->getValue($package); $currentVersionStrategy = $v->getValue($package);
if (property_exists($currentVersionStrategy, 'format')) { if (property_exists($currentVersionStrategy, 'format')) {
$f = new \ReflectionProperty($currentVersionStrategy, 'format'); $f = new \ReflectionProperty($currentVersionStrategy, 'format');
$f->setAccessible(true); $f->setAccessible(true);
$format = $f->getValue($currentVersionStrategy); $format = $f->getValue($currentVersionStrategy);
$v->setValue($package, new StaticVersionStrategy($version, $format)); $v->setValue($package, new StaticVersionStrategy($version, $format));

View File

@ -95,13 +95,14 @@ class AssetsHelper extends Helper
if ($version) { if ($version) {
$package = $this->packages->getPackage($packageName); $package = $this->packages->getPackage($packageName);
$v = new \ReflectionProperty($package, 'versionStrategy'); $v = new \ReflectionProperty('Symfony\Component\Asset\Package', 'versionStrategy');
$v->setAccessible(true); $v->setAccessible(true);
$currentVersionStrategy = $v->getValue($package); $currentVersionStrategy = $v->getValue($package);
$f = new \ReflectionProperty($currentVersionStrategy, 'format'); $f = new \ReflectionProperty($currentVersionStrategy, 'format');
$f->setAccessible(true); $f->setAccessible(true);
$format = $f->getValue($currentVersionStrategy); $format = $f->getValue($currentVersionStrategy);
$v->setValue($package, new StaticVersionStrategy($version, $format)); $v->setValue($package, new StaticVersionStrategy($version, $format));

View File

@ -14,6 +14,7 @@ namespace Symfony\Bundle\FrameworkBundle\Tests\Templating\Helper;
use Symfony\Bundle\FrameworkBundle\Templating\Helper\AssetsHelper; use Symfony\Bundle\FrameworkBundle\Templating\Helper\AssetsHelper;
use Symfony\Component\Asset\Package; use Symfony\Component\Asset\Package;
use Symfony\Component\Asset\Packages; use Symfony\Component\Asset\Packages;
use Symfony\Component\Asset\PathPackage;
use Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy; use Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy;
class AssetsHelperTest extends \PHPUnit_Framework_TestCase class AssetsHelperTest extends \PHPUnit_Framework_TestCase
@ -23,11 +24,14 @@ class AssetsHelperTest extends \PHPUnit_Framework_TestCase
*/ */
public function testLegacyGetUrl() public function testLegacyGetUrl()
{ {
$package = new Package(new StaticVersionStrategy('22', '%s?version=%s')); $versionStrategy = new StaticVersionStrategy('22', '%s?version=%s');
$packages = new Packages($package); $package = new Package($versionStrategy);
$imagePackage = new PathPackage('images', $versionStrategy);
$packages = new Packages($package, array('images' => $imagePackage));
$helper = new AssetsHelper($packages); $helper = new AssetsHelper($packages);
$this->assertEquals('me.png?version=42', $helper->getUrl('me.png', null, '42')); $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'));
} }
/** /**