我想在twig模板中使用php stripslashes函数但是这个函数不是标准的twig函数,所以我必须将它添加到twig作为扩展,我在控制器中尝试了这个代码,但它不起作用:
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class XController extends Controller
{
public function YAction($page)
{
$twig=$this->get('twig');
$twig->addFunction('functionName', new Twig_Function_Function('someFunction'));
...
我需要一个用于“Twig_Function_Function”类的use语句吗? 我做错了吗?
答案 0 :(得分:4)
如果您想在枝条模板中使用它,则无需在控制器内进行任何添加或调用,请阅读文档的How to write a custom Twig Extension部分。
基本上,您需要创建一个\Twig_Extension
扩展twig.extension
,然后您需要使用{{1}}标记Extension Class作为服务。最后,您需要实现register it方法以添加自定义的枝条函数。
但在您的情况下,最好添加过滤器,使用相同的逻辑,您还可以在扩展程序类中添加getFunctions()
方法,以便指定自定义过滤器。
另外,请深入了解文档的getFilters()
部分,了解twig可以扩展的所有方法。
答案 1 :(得分:0)
或{{ function('stripslashes', "This\\'ll do") }}
(或在构建Twig上下文时应用stripslashes())
但是,如果您在php中执行此操作,
add_filter('timber/twig', function(\Twig_Environment $twig) {
$twig->addFunction(new Twig\TwigFunction('stripslashes', 'stripslashes'));
return $twig;
});
然后在树枝上起作用
{{ stripslashes("This\'ll do...") }}