Remove hard dependency of RequestContext in AssetsExtension

This commit is contained in:
Pablo Godel 2014-08-23 17:40:29 -04:00
parent aa58bb8048
commit 5ad4d8a359
2 changed files with 7 additions and 2 deletions

View File

@ -24,7 +24,7 @@ class AssetsExtension extends \Twig_Extension
private $container; private $container;
private $context; private $context;
public function __construct(ContainerInterface $container, RequestContext $requestContext) public function __construct(ContainerInterface $container, RequestContext $requestContext = null)
{ {
$this->container = $container; $this->container = $container;
$this->context = $requestContext; $this->context = $requestContext;
@ -94,6 +94,7 @@ class AssetsExtension extends \Twig_Extension
* @param string $url The URL that has to be absolute * @param string $url The URL that has to be absolute
* *
* @return string The absolute URL * @return string The absolute URL
* @throws \RuntimeException
*/ */
private function ensureUrlIsAbsolute($url) private function ensureUrlIsAbsolute($url)
{ {
@ -101,6 +102,10 @@ class AssetsExtension extends \Twig_Extension
return $url; return $url;
} }
if (!$this->context) {
throw new \RuntimeException('To generate an absolute URL for an asset, the Symfony Routing component is required.');
}
if ('' === $host = $this->context->getHost()) { if ('' === $host = $this->context->getHost()) {
return $url; return $url;
} }

View File

@ -66,7 +66,7 @@
<service id="twig.extension.assets" class="%twig.extension.assets.class%" public="false"> <service id="twig.extension.assets" class="%twig.extension.assets.class%" public="false">
<tag name="twig.extension" /> <tag name="twig.extension" />
<argument type="service" id="service_container" /> <argument type="service" id="service_container" />
<argument type="service" id="router.request_context" /> <argument type="service" id="router.request_context" on-invalid="null" />
</service> </service>
<service id="twig.extension.actions" class="%twig.extension.actions.class%" public="false"> <service id="twig.extension.actions" class="%twig.extension.actions.class%" public="false">