bug #14708 [TwigBridge] use proper class to fetch asset version strategy property (xabbuh)
This PR was merged into the 2.7 branch.
Discussion
----------
[TwigBridge] use proper class to fetch asset version strategy property
| Q | A
| ------------- | ---
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #14692
| License | MIT
| Doc PR |
Commits
-------
01b7dd6
[TwigBridge] use proper class to fetch asset version strategy property
This commit is contained in:
commit
b248bd1ee1
@ -98,10 +98,14 @@ class AssetExtension extends \Twig_Extension
|
||||
{
|
||||
if ($version) {
|
||||
$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);
|
||||
|
||||
$currentVersionStrategy = $v->getValue($package);
|
||||
|
||||
$f = new \ReflectionProperty($currentVersionStrategy, 'format');
|
||||
|
@ -14,6 +14,7 @@ namespace Symfony\Bridge\Twig\Tests\Extension;
|
||||
use Symfony\Bridge\Twig\Extension\AssetExtension;
|
||||
use Symfony\Component\Asset\Package;
|
||||
use Symfony\Component\Asset\Packages;
|
||||
use Symfony\Component\Asset\PathPackage;
|
||||
use Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy;
|
||||
|
||||
class AssetExtensionTest extends \PHPUnit_Framework_TestCase
|
||||
@ -23,8 +24,25 @@ class AssetExtensionTest extends \PHPUnit_Framework_TestCase
|
||||
*/
|
||||
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
|
||||
->expects($this->any())
|
||||
@ -32,12 +50,6 @@ class AssetExtensionTest extends \PHPUnit_Framework_TestCase
|
||||
->will($this->returnCallback(function ($arg) { return 'http://localhost/'.$arg; }))
|
||||
;
|
||||
|
||||
$package = new Package(new StaticVersionStrategy('22', '%s?version=%s'));
|
||||
$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'));
|
||||
return new AssetExtension(new Packages($package), $foundationExtension);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user