在TWIG中使用PHP函数?

15

在 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个回答

13
你需要的是函数过滤器。你可以使用示例轻松添加这些内容。

2
你能否在实现代码中加入一些细节说明?在控制器中应该包含"Twig_Environment"类的函数和实例化吗?"$twig = new Twig_Environment($loader)"对象是否需要作为变量(例如'twig' => $twig)传递给渲染模板?在"$loader = new Twig_Loader_Filesystem('/path/to/templates');"定义中应该包括什么内容?这是我的捆绑包中模板的路径吗?它需要是绝对路径吗?我无法运行它。最好附上一个示例... - RayOnAir
对于任何想要示例的人,Twig文档中有一个非常好而简单的示例,可以在sensiolabs上找到: http://twig.sensiolabs.org/doc/advanced.html#functions - h00ligan
FYI:链接已失效 - DarkBee
请注意:链接已失效 - undefined

11
// $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));
});
在twig模板中:
{{ explode(",", "It's raining, cats and dogs.").0 | raw }}

这将输出 "It's raining"。Twig默认会转义返回的值。

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

在Symfony2控制器中:

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

这个应该在标准的Symfony2应用程序中注册在哪里? - gondo
这个东西绝对不能使用,因为它非常不安全。 - Niels Keurentjes
不是的,它不会突然变成WordPress。但是模板应该只使用可用数据呈现HTML / JavaScript。 - Alexandr Karbivnichiy

1

已经有一个Twig扩展可以让你在Twig模板中调用PHP函数,例如:

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

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

请查看官方的扩展存储库。extension repository.

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接