2013-11-20 67 views
1

我正在嘗試使用樹枝擴展將功能添加到樹枝gramework。使用樹枝擴展服務時出現異常

這是擴展(我不知道,如果它的工作原理,因爲我已經沒有機會使用它,因爲這個問題我有:

class CnamtsStyleExtension extends \Twig_Extension { 
protected $loader; 

public function __construct(FilesystemLoader $loader) 
{ 
    $this->loader = $loader; 
} 

public function getFunctions() 
{ 
    return array(
     'modal' => new \Twig_SimpleFunction($this, 'getModal', array('is_safe' => array('html'))) 
    ); 
} 

public function getModal($parameters=null) { 
    $template = htmlspecialchars($this->loader->getSource('component/modal.html.twig')); 

    return $this->getTemplateCode($template, $parameters===null ? null : json_decode($parameters)); 
} 

protected function getTemplateCode($template, $parameters) { 
    $html_template = ''; 

    if($parameters !== null) { 
     foreach ($parameters as $key => $value) { 
      $html_template = str_replace('{{' .$key. '}}', $value, $template); 
     } 
    } 

    return $html_template; 
} 

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

}

這裏是我的服務:

services: 
cnamts.twig.cnamts_style_extension: 
    class: Cnamts\StyleGuideBundle\Twig\CnamtsStyleExtension 
    tags: 
     - { name: twig.extension } 
    arguments: ["@twig.loader"] 

和樹枝:

{% extends "::base.html.twig" %} 

{% block body %} 
    Hello world 
{% endblock %} 

正如你所看到的,我的樹枝不使用我的擴展功能。它只是一個簡單的'你好世界'。

所以我清除緩存(甚至手動可以肯定的),我送路線.... 我有兩個例外:

異常號1在我的樹枝:

ContextErrorException: Warning: Illegal offset type in my_project\vendor\twig\twig\lib\Twig\Environment.php line 1167 

異常號2:即使網頁工具欄無法顯示,並有一個500錯誤從服務器

Illegal offset type "@WebProfiler/Collector/config.html.twig 

,但來自同一個例外最初進來Environment.php

我相信它與擴展,因爲當我停用我已經加入該服務,沒有錯誤

謝謝你的幫助;

PS:我可以調試並看到加載程序不爲空或任何(似乎很好)...我的課是問題,因爲我試圖加載相同的服務給予另一個類擴展,我沒有問題。

回答

2

嘗試使用這個

public function getFunctions(){ 
     return array(
      'getmodal' => new \Twig_Function_Method($this, 'getModal'); 
     ); 
    } 
+0

我剛剛發現......它像Symfony的2.3.6的錯誤。 Twif_Function_Method被警告過時,但新功能不起作用..謝謝 – mlwacosmos

+0

或者可能不是......但在不同的上下文中使用:從小枝的第2版我們必須使用Twig_Function_Method – mlwacosmos