Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 58bed5d

Browse filesBrowse files
committed
feature #10593 [Templating] Added ability to set a specific version of the asset (romainneutron)
This PR was merged into the 2.5-dev branch. Discussion ---------- [Templating] Added ability to set a specific version of the asset | Q | A | ------------- | --- | Bug fix? | no | New feature? | yes | BC breaks? | no | Deprecations? | no | Tests pass? | yes | License | MIT | Doc PR | https://github.com/symfony/symfony-docs/pull/3742/files This PR replaces #6092 Commits ------- 1642094 [Templating] Update changelog 6fce503 [Templating] Added ability to set a specific version of the asset
2 parents 7792ba9 + 1642094 commit 58bed5d
Copy full SHA for 58bed5d

File tree

Expand file treeCollapse file tree

8 files changed

+52
-21
lines changed
Filter options
Expand file treeCollapse file tree

8 files changed

+52
-21
lines changed

‎src/Symfony/Bundle/TwigBundle/Extension/AssetsExtension.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/TwigBundle/Extension/AssetsExtension.php
+6-5Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,16 @@ public function getFunctions()
4848
*
4949
* Absolute paths (i.e. http://...) are returned unmodified.
5050
*
51-
* @param string $path A public path
52-
* @param string $packageName The name of the asset package to use
53-
* @param Boolean $absolute Whether to return an absolute URL or a relative one
51+
* @param string $path A public path
52+
* @param string $packageName The name of the asset package to use
53+
* @param Boolean $absolute Whether to return an absolute URL or a relative one
54+
* @param string|Boolean|null $version A specific version
5455
*
5556
* @return string A public path which takes into account the base path and URL path
5657
*/
57-
public function getAssetUrl($path, $packageName = null, $absolute = false)
58+
public function getAssetUrl($path, $packageName = null, $absolute = false, $version = null)
5859
{
59-
$url = $this->container->get('templating.helper.assets')->getUrl($path, $packageName);
60+
$url = $this->container->get('templating.helper.assets')->getUrl($path, $packageName, $version);
6061

6162
if (!$absolute) {
6263
return $url;

‎src/Symfony/Component/Templating/Asset/Package.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Templating/Asset/Package.php
+14-6Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,34 +33,42 @@ public function __construct($version = null, $format = '')
3333
$this->format = $format ?: '%s?%s';
3434
}
3535

36+
/**
37+
* {@inheritdoc}
38+
*/
3639
public function getVersion()
3740
{
3841
return $this->version;
3942
}
4043

41-
public function getUrl($path)
44+
/**
45+
* {@inheritdoc}
46+
*/
47+
public function getUrl($path, $version = null)
4248
{
4349
if (false !== strpos($path, '://') || 0 === strpos($path, '//')) {
4450
return $path;
4551
}
4652

47-
return $this->applyVersion($path);
53+
return $this->applyVersion($path, $version);
4854
}
4955

5056
/**
5157
* Applies version to the supplied path.
5258
*
53-
* @param string $path A path
59+
* @param string $path A path
60+
* @param string|Boolean|null $version A specific version
5461
*
5562
* @return string The versionized path
5663
*/
57-
protected function applyVersion($path)
64+
protected function applyVersion($path, $version = null)
5865
{
59-
if (null === $this->version) {
66+
$version = null !== $version ? $version : $this->version;
67+
if (null === $version || false === $version) {
6068
return $path;
6169
}
6270

63-
$versionized = sprintf($this->format, ltrim($path, '/'), $this->version);
71+
$versionized = sprintf($this->format, ltrim($path, '/'), $version);
6472

6573
if ($path && '/' == $path[0]) {
6674
$versionized = '/'.$versionized;

‎src/Symfony/Component/Templating/Asset/PackageInterface.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Templating/Asset/PackageInterface.php
+3-2Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@ public function getVersion();
2828
/**
2929
* Returns an absolute or root-relative public path.
3030
*
31-
* @param string $path A path
31+
* @param string $path A path
32+
* @prama string|Boolean|null $version A specific version for the path
3233
*
3334
* @return string The public path
3435
*/
35-
public function getUrl($path);
36+
public function getUrl($path, $version = null);
3637
}

‎src/Symfony/Component/Templating/Asset/PathPackage.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Templating/Asset/PathPackage.php
+5-2Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,16 @@ public function __construct($basePath = null, $version = null, $format = null)
4242
}
4343
}
4444

45-
public function getUrl($path)
45+
/**
46+
* {@inheritdoc}
47+
*/
48+
public function getUrl($path, $version = null)
4649
{
4750
if (false !== strpos($path, '://') || 0 === strpos($path, '//')) {
4851
return $path;
4952
}
5053

51-
$url = $this->applyVersion($path);
54+
$url = $this->applyVersion($path, $version);
5255

5356
// apply the base path
5457
if ('/' !== substr($url, 0, 1)) {

‎src/Symfony/Component/Templating/Asset/UrlPackage.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Templating/Asset/UrlPackage.php
+5-2Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,16 @@ public function __construct($baseUrls = array(), $version = null, $format = null
4141
}
4242
}
4343

44-
public function getUrl($path)
44+
/**
45+
* {@inheritdoc}
46+
*/
47+
public function getUrl($path, $version = null)
4548
{
4649
if (false !== strpos($path, '://') || 0 === strpos($path, '//')) {
4750
return $path;
4851
}
4952

50-
$url = $this->applyVersion($path);
53+
$url = $this->applyVersion($path, $version);
5154

5255
if ($url && '/' != $url[0]) {
5356
$url = '/'.$url;

‎src/Symfony/Component/Templating/CHANGELOG.md

Copy file name to clipboardExpand all lines: src/Symfony/Component/Templating/CHANGELOG.md
+6Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
CHANGELOG
22
=========
33

4+
2.5.0
5+
-----
6+
7+
* added ability to generate versioned URLs
8+
* added ability to generate absolute URLs
9+
410
2.1.0
511
-----
612

‎src/Symfony/Component/Templating/Helper/CoreAssetsHelper.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Templating/Helper/CoreAssetsHelper.php
+5-4Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,15 @@ public function getVersion($packageName = null)
105105
*
106106
* Absolute paths (i.e. http://...) are returned unmodified.
107107
*
108-
* @param string $path A public path
109-
* @param string $packageName The name of the asset package to use
108+
* @param string $path A public path
109+
* @param string $packageName The name of the asset package to use
110+
* @param string|Boolean|null $version A specific version
110111
*
111112
* @return string A public path which takes into account the base path and URL path
112113
*/
113-
public function getUrl($path, $packageName = null)
114+
public function getUrl($path, $packageName = null, $version = null)
114115
{
115-
return $this->getPackage($packageName)->getUrl($path);
116+
return $this->getPackage($packageName)->getUrl($path, $version);
116117
}
117118

118119
/**

‎src/Symfony/Component/Templating/Tests/Helper/AssetsHelperTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Templating/Tests/Helper/AssetsHelperTest.php
+8Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,14 @@ public function testGetUrl()
5757
$this->assertEquals('/', $helper->getUrl(''), '->getUrl() with empty arg returns the prefix alone');
5858
}
5959

60+
public function testGetUrlWithVersion()
61+
{
62+
$helper = new AssetsHelper(null, array(), '12');
63+
$this->assertEquals('/foo.js?12', $helper->getUrl('foo.js'));
64+
$this->assertEquals('/foo.js?bar', $helper->getUrl('foo.js', null, 'bar'));
65+
$this->assertEquals('/foo.js', $helper->getUrl('foo.js', null, false));
66+
}
67+
6068
public function testGetUrlLeavesProtocolRelativePathsUntouched()
6169
{
6270
$helper = new AssetsHelper(null, 'http://foo.com');

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.