Twig / Symfony 2.3.4:扩展存储在数据库中的twig模板

时间:2013-08-29 11:32:59

标签: php database templates symfony twig

我目前正在Symfony 2.3.4中构建CMS,作为此CMS的一部分,我想将所有树枝模板存储在数据库中。我已经阅读了如何在数据库中存储和访问它们,这看起来很简单 - 但是,仍有一个问题。必须可以扩展存储在数据库中的模板,但我不知道如何执行此操作。

如果有任何人有任何经验或知识,我将非常感激。

干杯!

2 个答案:

答案 0 :(得分:1)

您可能希望深入了解Twig_TokenParser_Extends,了解extends标记在内部的运作方式。

答案 1 :(得分:1)

按照symfony forumTwig Recipes Page的指南,我可以将所有模板存储在数据库中,并自动进行扩展。确保你的isFresh和getCacheKey返回值,否则你会因某种原因得到无限递归。

值得注意的是,您必须向数据库加载器服务添加标记,而不是像symfony论坛所建议的那样添加chain_loader服务。

vendor.bundle.twig_database_loader:
    class: Vendor\Bundle\Twig\TwigDatabaseLoader
    arguments: [ @doctrine.orm.entity_manager ]
    tags:
        - { name: twig.loader }

此代码可以很好地工作。