在TWIG中使用PHP函数?

时间:2011-11-18 09:55:22

标签: php symfony twig

在PHP模板中,我可以使用php函数,例如:

foreach ($users as $user){
  echo someFunction($user->getName());
}

如何在TWIG中制作?

{% for user in users %}
    * {{ user.name }}
{% else %}
    No user have been found.
{% endfor %}

我如何实现这一目标?

4 个答案:

答案 0 :(得分:14)

您需要的是functionsfilters。您可以使用示例轻松添加这些内容。

答案 1 :(得分:10)

// $twig is a Twig_Environment instance.

$twig->registerUndefinedFunctionCallback(function($name) {
    if (function_exists($name)) {
        return new Twig_SimpleFunction($name, function() use($name) {
            return call_user_func_array($name, func_get_args());
        });
    }
    throw new \RuntimeException(sprintf('Function %s not found', $name));
});

在树枝模板中:

{{ explode(",", "It's raining, cats and dogs.").0 | raw }}

这将输出“正在下雨”。默认情况下,返回的值在Twig中进行转义。

Twig_SimpleFunction是首选使用的类。自1.12以来,Twig中所有其他与函数相关的类都被弃用(将在2.0中删除)。

在Symfony2控制器中:

$twig = $this->get('twig');

答案 2 :(得分:1)

已经有一个Twig扩展,允许您从Twig模板调用PHP函数,如:

Hi, I am unique: {{ uniqid() }}.

And {{ floor(7.7) }} is floor of 7.7.

见官方extension repository

答案 3 :(得分:0)

如果你在symfony 2工作,这也应该有所帮助。概念是一样的,但是你把代码放在其他地方并将它格式化得有点不同。

http://symfony.com/doc/2.0/cookbook/templating/twig_extension.html