use Twig\Environment;
use Twig\TwigFunction;
public function getFunctions()
{
return [
new TwigFunction(
'myfunction',
[$this, 'myFunction'],
['needs_environment' => true]
),
];
}
public function myFunction(Environment $environment, string $someParam)
{
// ...
}
对于旧版本的Twig
public function getFunctions()
{
return array(
new \Twig_SimpleFunction(
'myfunction',
array($this, 'myFunction'),
array('needs_environment' => true)
),
);
}
public function myFunction(\Twig_Environment $environment, string $someParam)
{
// ...
}
4条答案
按热度按时间bnl4lu3b1#
你可以定义扩展,使它需要环境。Twig会自动将它传递给函数。
对于旧版本的Twig
sbtkgmzw2#
使用此函数,用户可以将分支环境示例传递给分支扩展
xkrw2x1b3#
@tvlooy的回答给予了我一个提示,但对我不起作用。我需要做的是:
我需要additionaly添加
'is_safe' => ['html']
,以避免HTML的自动转义。我还将该类注册为symfony服务:
在TWIG模板中,我添加了
{{ myMenu() }}
我使用
"twig/twig": "~1.10"
和Symfony 3.1.3版本zzzyeukh4#
如果即使设置了needs_environment参数,问题仍然存在,则可以在如下调用方法时在模板中使用
row
: