是否可以在Twig中创建对象? 我想到达一个对象到树枝扩展名,如以下代码:
{{myFunction({title: titleString, name: nameString})}}
我在函数内需要一个对象。 不幸的是,我到达这里的函数是一个数组,而不是一个对象。
如何在Twig中创建对象。
如果那不可能的话,如果函数本身希望将Object作为参数,我将如何到达该数组作为对象?
答案 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
为什么不创建一个需要数组的备用函数调用,然后将该数组转换为对象并运行您的主函数?