TWIG - 使用默认过滤器加载模板

时间:2016-03-14 16:01:43

标签: php twig

我想在我的所有变量上默认应用过滤器,以避免这种情况:

{% set var = "%gg% man" %}
{% block body %}
<h1>You are a {{ var|replace({'%gg%':good, '%bb%':bad}) }}</h1>
{% block body %}
输出

你是个好人

有解决方案吗?

1 个答案:

答案 0 :(得分:0)

您可以创建过滤树枝。

// src/AppBundle/Twig/AppExtension.php
namespace AppBundle\Twig;

class AppExtension extends \Twig_Extension
{
    public function getFilters()
    {
        return array(
            new \Twig_SimpleFilter('customReplace', array($this, 'customReplaceFilter')),
        );
    }

    public function customReplaceFilter(yourArguments)
    {
        //do your replace here in PHP

        return [your string after replace];
    }

    public function getName()
    {
        return 'app_extension';
    }
}

在你的树枝上

{{ var|customReplace(yourArguments) }}

不要忘记你的app / config / services.yml:

services:
    app.twig_extension:
        class: AppBundle\Twig\AppExtension
        public: false
        tags:
            - { name: twig.extension }