使用twig扩展服务时出现异常

问题描述 投票:0回答:1

我正在尝试使用 twig 扩展向 twig 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 %}

如您所见,我的 twig 没有使用我的扩展的任何功能。这只是一个简单的“你好世界”。

所以我清除了缓存(甚至手动确定),然后发送路线...... 我有两个例外:

我的树枝中的第 1 号异常:

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

异常2:连Web工具栏都无法显示,服务器出现500错误

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

但最初来自Environment.php中的相同异常

我确信它已链接到扩展程序,因为当我停用我添加的服务时,没有错误

谢谢您的帮助;

PS:我可以调试并看到加载器不为空或其他什么(看起来不错)...我的类是问题,因为我尝试加载相同的服务并提供另一个类扩展,但我没有问题。

php symfony twig
1个回答
2
投票

尝试使用这个

 public function getFunctions(){
        return array(
            'getmodal' => new \Twig_Function_Method($this, 'getModal');
        );
    }
© www.soinside.com 2019 - 2024. All rights reserved.