2016-09-06 81 views
1

我创建了一个树枝延伸TE渲染一些变量视图变量模板,但我有这个错误枝杈伸展:渲染

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') }} 
+2

可能是更好的你定义一个twig_function而不是一个过滤器:过滤器作为参数elem你想过滤因此该函数的输入是'entity.activate'而不是''测试var1','test var2'' – Matteo

+0

啊,好的,我会试试谢谢 – hous

+0

嗨@hous没有必要开发一个函数而不是过滤器,阅读我在文档中找到的答案。对不起,错误 – Matteo

回答

1

参照TWIG显影剂导向约Filters

当嫩枝调用时,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 
    )); 
} 

希望得到这个帮助。对不起,我的评论关于枝功能

+0

非常感谢 – hous