Twig 支持这个吗?

Does Twig support this?

我正在研究 Symfony 的 CMS 想法,我不确定我想要实现的东西是否可行。我正在寻找一些指导。

我想创建一个更像块的树枝函数。

我希望能够像这样编写模板:

{% content('main_content') %}
    <p>Some markup here</p>
{% end content('main_content') %} 

其中 content($id) 是一个让我可以访问内部标记并允许我的 twig 扩展在需要时更改该标记的函数。

content($id) 函数的目标是根据给定的 $id 更改标记。

显然我对这个实现的思路是错误的,因为我找不到任何与此相关的文档。

我不确定如何表达这个问题:是否可以编写一个像块一样运行并允许我访问内部数据的 twig 函数。如果可能的话,您可以 link 给我一些示例或博客吗?我正在使用 Symfony,所以使用 Symfony 实现的答案是一个加号。

编辑:content($id) 函数的示例

class TwigExtension extends \Twig_Extension{

    public function content ($id, $content) {
        /* pseudo code now*/
        if($id = "some condition"){
           return $someNewContent;
        }
        return $content;
    }
}

您需要创建一个新的 Twig 标签。更多文档在这里:https://github.com/twigphp/Twig/blob/master/doc/advanced.rst#tags

此外,Twig_Node_Block 会很好地说明您需要构建什么: https://github.com/twigphp/Twig/blob/1.x/lib/Twig/Node/Block.php