我正在尝试使用树枝延伸添加功能到树枝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:即使Web工具栏无法显示,服务器也出现500错误
Illegal offset type "@WebProfiler/Collector/config.html.twig
但最初来自Environment.php中的相同异常
我确定它与扩展程序相关联,因为当我停用我添加的服务时,没有错误
谢谢你的帮助;
PS:我可以调试并看到加载器不是null或其他什么(看起来不错)...我的类是问题,因为我试图加载相同的服务给另一个类扩展,我没有问题。答案 0 :(得分:2)
尝试使用此
public function getFunctions(){
return array(
'getmodal' => new \Twig_Function_Method($this, 'getModal');
);
}