[TwigBridge] use proper class to fetch asset version strategy property
This commit is contained in:
parent
2213e67279
commit
01b7dd6d9f
@ -98,10 +98,14 @@ class AssetExtension extends \Twig_Extension
|
|||||||
{
|
{
|
||||||
if ($version) {
|
if ($version) {
|
||||||
$package = $this->packages->getPackage($packageName);
|
$package = $this->packages->getPackage($packageName);
|
||||||
|
$class = new \ReflectionClass($package);
|
||||||
|
|
||||||
$v = new \ReflectionProperty($package, 'versionStrategy');
|
while ('Symfony\Component\Asset\Package' !== $class->getName()) {
|
||||||
|
$class = $class->getParentClass();
|
||||||
|
}
|
||||||
|
|
||||||
|
$v = $class->getProperty('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');
|
||||||
|
@ -14,6 +14,7 @@ namespace Symfony\Bridge\Twig\Tests\Extension;
|
|||||||
use Symfony\Bridge\Twig\Extension\AssetExtension;
|
use Symfony\Bridge\Twig\Extension\AssetExtension;
|
||||||
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 AssetExtensionTest extends \PHPUnit_Framework_TestCase
|
class AssetExtensionTest extends \PHPUnit_Framework_TestCase
|
||||||
@ -23,8 +24,25 @@ class AssetExtensionTest extends \PHPUnit_Framework_TestCase
|
|||||||
*/
|
*/
|
||||||
public function testLegacyGetAssetUrl()
|
public function testLegacyGetAssetUrl()
|
||||||
{
|
{
|
||||||
$this->iniSet('error_reporting', -1 & ~E_USER_DEPRECATED);
|
$extension = $this->createExtension(new Package(new StaticVersionStrategy('22', '%s?version=%s')));
|
||||||
|
|
||||||
|
$this->assertEquals('me.png?version=42', $extension->getAssetUrl('me.png', null, false, '42'));
|
||||||
|
$this->assertEquals('http://localhost/me.png?version=22', $extension->getAssetUrl('me.png', null, true));
|
||||||
|
$this->assertEquals('http://localhost/me.png?version=42', $extension->getAssetUrl('me.png', null, true, '42'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group legacy
|
||||||
|
*/
|
||||||
|
public function testGetAssetUrlWithPackageSubClass()
|
||||||
|
{
|
||||||
|
$extension = $this->createExtension(new PathPackage('foo', new StaticVersionStrategy('22', '%s?version=%s')));
|
||||||
|
|
||||||
|
$this->assertEquals('/foo/me.png?version=42', $extension->getAssetUrl('me.png', null, false, 42));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function createExtension(Package $package)
|
||||||
|
{
|
||||||
$foundationExtension = $this->getMockBuilder('Symfony\Bridge\Twig\Extension\HttpFoundationExtension')->disableOriginalConstructor()->getMock();
|
$foundationExtension = $this->getMockBuilder('Symfony\Bridge\Twig\Extension\HttpFoundationExtension')->disableOriginalConstructor()->getMock();
|
||||||
$foundationExtension
|
$foundationExtension
|
||||||
->expects($this->any())
|
->expects($this->any())
|
||||||
@ -32,12 +50,6 @@ class AssetExtensionTest extends \PHPUnit_Framework_TestCase
|
|||||||
->will($this->returnCallback(function ($arg) { return 'http://localhost/'.$arg; }))
|
->will($this->returnCallback(function ($arg) { return 'http://localhost/'.$arg; }))
|
||||||
;
|
;
|
||||||
|
|
||||||
$package = new Package(new StaticVersionStrategy('22', '%s?version=%s'));
|
return new AssetExtension(new Packages($package), $foundationExtension);
|
||||||
$packages = new Packages($package);
|
|
||||||
$extension = new AssetExtension($packages, $foundationExtension);
|
|
||||||
|
|
||||||
$this->assertEquals('me.png?version=42', $extension->getAssetUrl('me.png', null, false, '42'));
|
|
||||||
$this->assertEquals('http://localhost/me.png?version=22', $extension->getAssetUrl('me.png', null, true));
|
|
||||||
$this->assertEquals('http://localhost/me.png?version=42', $extension->getAssetUrl('me.png', null, true, '42'));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user