Add support for twig markup like {{ url('theme://images/logo.png') }}

This commit is contained in:
Matias Griese
2014-09-02 20:04:54 +03:00
parent 48d7332e6a
commit 263b7b3b1c

View File

@@ -1,5 +1,6 @@
<?php <?php
namespace Grav\Common; namespace Grav\Common;
use Grav\Component\Filesystem\ResourceLocator;
/** /**
* The Twig extension adds some filters and functions that are useful for Grav * The Twig extension adds some filters and functions that are useful for Grav
@@ -44,7 +45,8 @@ class TwigExtension extends \Twig_Extension
public function getFunctions() public function getFunctions()
{ {
return array( return array(
new \Twig_SimpleFunction('repeat', array($this, 'repeatFunc')) new \Twig_SimpleFunction('repeat', array($this, 'repeatFunc')),
new \Twig_SimpleFunction('url', array($this, 'urlFunc'))
); );
} }
@@ -195,4 +197,22 @@ class TwigExtension extends \Twig_Extension
{ {
return str_repeat($input, $multiplier); return str_repeat($input, $multiplier);
} }
/**
* Return URL to the resource.
*
* @param string $input
* @param bool $domain
* @return string
*/
public function urlFunc($input, $domain = false)
{
$grav = Grav::instance();
/** @var ResourceLocator $locator */
$locator = $grav['locator'];
/** @var Uri $uri */
$uri = $grav['uri'];
return $uri->rootUrl($domain) . $locator->findResource($input, false);
}
} }