我有一个基于 twig 的 Symfony 2 项目。由于 Symfony 2 的性质,使用了命名空间。因此,我无法在命名空间之外提供全局函数。
这是我的 Twig 扩展类:
<?php
namespace Web\MailBundle\Twig;
use Twig_Extension, Twig_SimpleFilter;
class Twig extends Twig_Extension
{
public function getName()
{
return 'twig_extension';
}
public function getFilters() {
return array(
'shortKey' => new Twig_SimpleFilter('shortKey', 'myCustomFilterFunction')
);
}
public function myCustomFilterFunction() {
//code here...
}
结果:
FatalErrorException: Error: Call to undefined function myCustomFilterFunction()
为什么:因为,Twig 试图找到这个函数,但它在一个类中。如果这次我将它移到课外,我将面临命名空间。因为它是命名空间的。
研究:我挖掘代码。树枝做同样的事情。他们在课堂之外编写过滤器和函数。但由于命名空间,我不能这样做。如果可能的话,我想通过使用适当的解决方案来做到这一点。如果失败;我将提供最新的解决方案,即创建另一个没有命名空间的 php 文件并将其包含到项目中......
--
我怎样才能克服它?Twig Filter 已被弃用,我们必须使用 SimpleFilter 方法。但我只是无法完成它。