我有一些问题要实现twig扩展。我需要创建自己的过滤器(子过滤器)。所以我想过使用twig扩展。
我在MyApp \ Bundle \ WebsiteBundle \和file上创建了一个名为“Extension”的文件夹: WebsiteExtension.php
namespace Bundle\WebsiteBundle\Extension;
class WebsiteExtension extends \Twig_Extension {
public function getFilters() {
return array(
'substr' => new \Twig_Filter_Method($this, 'substrFilter'),
);
}
public function substrFilter($sentence, $start, $end) {
return substr($sentence, $start, $end);
}
public function getName()
{
return 'website_extension';
}
}
然后在/ app / config
上的config.yml上services:
Website.twig.extension:
class: MyApp\Bundle\WebsiteBundle\Extension\WebsiteExtension
tags:
- { name: twig.extension }
但是发生了错误:
"Fatal error: Class 'MyApp\Bundle\WebsiteBundle\Extension\WebsiteExtension' not found in .../appDevDebugProjectContainer.php on line 1391"
这很奇怪,因为文件和类存在......我错过了什么但是什么?
答案 0 :(得分:6)
替换此
namespace Bundle\WebsiteBundle\Extension;
通过这个
namespace MyApp\Bundle\WebsiteBundle\Extension;
你需要什么Bundle/WebsiteBundle
?
Bundle
还不够吗?
你可以在这里看到我是如何实现这一点的 https://github.com/azat/blog/blob/master/src/Blog/WebBundle/Twig/Extension/WebExtension.php