我正在使用此扩展Twig:
namespace Acme\Bundle\MyBundle\Twig;
use Twig_SimpleFunction;
class LinkGenerator extends \Twig_Extension
{
public function getFunctions() {
return array(
new Twig_SimpleFunction('link', function($param) {
return "TEST " . $param;
})
);
}
public function getName() {
return "link";
}
}
工作正常。使用{{link(2)}}返回'TEST 2'。
出于演示目的,我想简单地将查询sting?link = 1附加到使用'url'Twig函数时会呈现的内容。
所以代码可能如下所示:
new Twig_SimpleFunction('link', function($param) {
//render exactly how this would look if using the Twig 'url' function
$url = $this->runFunction('url', $params);
//append the query string
$url .= "?link=1";
return $url;
})
答案 0 :(得分:1)
您可以配置DIC以将依赖项注入到您的Twig扩展中。
我会尝试注入Symfony2的TwigBundle提供的RoutingExtension
类。
(未测试的)
DIC配置:
<service id="my.link_generator.twig.extension" class="Path\To\My\Templating\Twig\LinkGeneratorExtension">
<argument type="service" id="twig.extension.routing"/>
<tag name="twig.extension" />
</service>
LinkGeneratorExtension.php
class LinkGenerator extends \Twig_Extension
{
protected $routingExt;
public function __construct(RoutingExtension $routingExt)
{
$this->routingExt = $routingExt;
}
public function getLink($foo)
{
// ...
$this->routingExt->getUrl(...);
}
}