Twig扩展:使用变量渲染模板

时间:2016-09-06 11:08:33

标签: twig symfony

我已经创建了一个枝条扩展,使用一些变量渲染视图,但是我有这个错误

An exception has been thrown during the rendering of a template ("Notice: Array to string conversion") 
in :Backend\twig:activate.html.twig at line 1.

这是类扩展:

namespace AppBundle\Twig;

class ActivateExtension extends \Twig_Extension
{
    public function getFilters()
    {
        return array(
            new \Twig_SimpleFilter('activate', array($this, 'booleanFilter'), array('is_safe' => array('html'),
                'needs_environment' => true)),
        );
    }

    public function booleanFilter(\Twig_Environment $twig, $var1, $var2)
    {

        return $twig->render(':Backend/twig:activate.html.twig', array(
            'var1' => $var1,
            'var2' => $var2
        ));
    }

    public function getName()
    {
        return 'activate_extension';
    }
}

这是要点数的观点:

//test
{{ var1 }}<br>
{{ var2 }}

这就是在另一个视图中调用过滤器的方法:

{{ entity.activate|activate('test var1', 'test var2') }}

1 个答案:

答案 0 :(得分:1)

请参阅有关Filters的TWIG开发人员指南:

  

当被Twig调用时,PHP可调用接收到的左侧   过滤器(在管道之前|)作为第一个参数和额外的   传递给过滤器的参数(在括号()内)作为额外的参数   参数。

因此,php函数的第一个参数是entity.activate的值,可能是错误的数组,然后其他参数作为参数传递。例如,您应该按照以下步骤更改过滤器:

public function booleanFilter(\Twig_Environment $twig, $activate, $var1, $var2)
{

    return $twig->render(':Backend/twig:activate.html.twig', array(
        'var1' => $var1,
        'var2' => $var2
    ));
}

希望这有帮助。对不起,我对twig功能的评论