1

我想在 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”类的使用声明吗?我做错了吗?

4

2 回答 2

4

如果你想在你的树枝模板中使用它,你不需要在你的控制器内进行任何添加或调用,阅读文档的如何编写自定义树枝扩展部分。

基本上,您需要创建一个扩展类extends \Twig_Extension,然后您需要使用标签将其注册为服务。twig.extension最后,您需要实现该getFunctions()方法以添加自定义的树枝功能。

但在您的情况下,最好添加一个过滤器,使用相同的逻辑,您还可以getFilters()在扩展类中添加一个方法,以便您可以指定自定义过滤器。

此外,更深入地查看文档的Extending Twig部分,以了解可以扩展 twig 的所有方式。

于 2012-11-17T13:19:00.317 回答
1

或者 {{ 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...") }}
于 2019-07-11T16:28:45.077 回答