是否可以在Twig中创建对象?

时间:2018-08-16 07:46:51

标签: symfony twig

是否可以在Twig中创建对象? 我想到达一个对象到树枝扩展名,如以下代码:

{{myFunction({title: titleString, name: nameString})}}

我在函数内需要一个对象。 不幸的是,我到达这里的函数是一个数组,而不是一个对象。

如何在Twig中创建对象。

如果那不可能的话,如果函数本身希望将Object作为参数,我将如何到达该数组作为对象?

2 个答案:

答案 0 :(得分:2)

您可以创建一个过滤器,以将数组解析为对象,如下所示:

例如在src \ AppBundle \ Twig \ Parsers.php中创建扩展名

<?php

namespace AppBundle\Twig;

class Parsers extends \Twig_Extension {

public function getFilters()
{
    return array(
        new \Twig_SimpleFilter('toObject', array($this, 'toObject')),
    );
}

/**
 * @param array $array
 * @return object
 */
public function toObject($array)
{
    return (object) $array;
}

}

如果您将symfony 3.4与自动装配一起使用,则一切现在都应正常工作, 如果您使用的是2.8,则使用以下命令在services.yml中注册扩展名:

    app.twig_parsers_extension:
        class: AppBundle\Twig\Parsers
        tags: [{ name: twig.extension }]

在树枝中调用过滤器:

{{myFunction({title: titleString, name: nameString}|toObject)}}

答案 1 :(得分:-1)

https://symfony.com/doc/current/templating/twig_extension.html

为什么不创建一个需要数组的备用函数调用,然后将该数组转换为对象并运行您的主函数?