2016-09-06 83 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