added a way to provide asset base URLs in configuration

This commit is contained in:
Fabien Potencier 2010-08-19 16:17:20 +02:00
parent 7514177b51
commit d5a61e3bc5
4 changed files with 13 additions and 7 deletions

View File

@ -151,6 +151,10 @@ class WebExtension extends Extension
$container->setParameter('templating.assets.version', $config['assets_version']);
}
if (array_key_exists('assets_base_urls', $config)) {
$container->setParameter('templating.assets.base_urls', $config['assets_base_urls']);
}
// template paths
$dirs = array('%kernel.root_dir%/views/%%bundle%%/%%controller%%/%%name%%%%format%%.%%renderer%%');
foreach ($container->getParameter('kernel.bundle_dirs') as $dir) {

View File

@ -20,6 +20,7 @@
<parameter key="templating.helper.code.class">Symfony\Bundle\FrameworkBundle\Templating\Helper\CodeHelper</parameter>
<parameter key="templating.output_escaper">false</parameter>
<parameter key="templating.assets.version">null</parameter>
<parameter key="templating.assets.base_urls" type="collection"></parameter>
<parameter key="debug.file_link_format">null</parameter>
</parameters>
@ -64,7 +65,7 @@
<service id="templating.helper.assets" class="%templating.helper.assets.class%">
<tag name="templating.helper" alias="assets" />
<argument type="service" id="request" />
<argument />
<argument>%templating.assets.base_urls%</argument>
<argument>%templating.assets.version%</argument>
</service>

View File

@ -148,15 +148,16 @@ class AssetsHelper extends Helper
*/
public function getUrl($path)
{
if (strpos($path, '://')) {
if (false !== strpos($path, '://')) {
return $path;
}
$base = $this->getBaseURL($path);
if (0 !== strpos($path, '/')) {
$path = $this->basePath.$path;
$path = $base ? '/'.$path : $this->basePath.$path;
}
return $this->getBaseURL($path).$path.($this->version ? '?'.$this->version : '');
return $base.$path.($this->version ? '?'.$this->version : '');
}
/**

View File

@ -82,14 +82,14 @@ class AssetsHelperTest extends \PHPUnit_Framework_TestCase
$this->assertEquals('http://www.example.com/foo/foo.js', $helper->getUrl('/foo.js'), '->getUrl() prepends the base URL with a path');
$helper = new AssetsHelper('/foo', 'http://www.example.com/');
$this->assertEquals('http://www.example.com/foo/foo.js', $helper->getUrl('foo.js'), '->getUrl() prepends the base URL and the base path if defined');
$this->assertEquals('http://www.example.com/foo.js', $helper->getUrl('foo.js'), '->getUrl() prepends the base URL and the base path if defined');
$this->assertEquals('http://www.example.com/foo.js', $helper->getUrl('/foo.js'), '->getUrl() prepends the base URL but not the base path on absolute paths');
$helper = new AssetsHelper('/bar', 'http://www.example.com/foo');
$this->assertEquals('http://www.example.com/foo/bar/foo.js', $helper->getUrl('foo.js'), '->getUrl() prepends the base URL and the base path if defined');
$this->assertEquals('http://www.example.com/foo/foo.js', $helper->getUrl('foo.js'), '->getUrl() prepends the base URL and the base path if defined');
$this->assertEquals('http://www.example.com/foo/foo.js', $helper->getUrl('/foo.js'), '->getUrl() prepends the base URL but not the base path on absolute paths');
$helper = new AssetsHelper('/bar', 'http://www.example.com/foo', 'abcd');
$this->assertEquals('http://www.example.com/foo/bar/foo.js?abcd', $helper->getUrl('foo.js'), '->getUrl() appends the version if defined');
$this->assertEquals('http://www.example.com/foo/foo.js?abcd', $helper->getUrl('foo.js'), '->getUrl() appends the version if defined');
}
}