【问题标题】:stripslashes inside Twig templateTwig模板内的stripslashes
【发布时间】:2012-11-17 13:01:38
【问题描述】:

我想在 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 语句吗? 我做错了吗?

【问题讨论】:

    标签: symfony twig


    【解决方案1】:

    如果你想在你的树枝模板中使用它,你不需要在你的控制器内进行任何添加或调用,请阅读文档的How to write a custom Twig Extension 部分。

    基本上,您需要创建一个扩展\Twig_ExtensionExtension Class,然后您需要使用twig.extension 标签将register it 作为服务。最后,您需要实现getFunctions() 方法以添加自定义的树枝功能。

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

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

    【讨论】:

      【解决方案2】:

      {{ 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...") }}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-31
        • 2014-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 1970-01-01
        相关资源
        最近更新 更多