我创建了一个螺栓扩展,它提供了一个新的树枝函数foo
。使用以下代码$this->addTwigFunction('foo', 'twigFoo');
将twig函数添加到twig框架中。
public function twigFoo()
{
$markup = '
<hr>
Foo
<hr>';
return new \Twig_Markup($markup, 'UTF-8');
}
我的想法是cms的用户可以在内容类型中使用twig功能。但是当显示记录的主体时,枝条功能可以作为纯HTML显示,例如:{{ foo }}
我认为问题是,枝条模板将在分配记录体之前呈现。因此,我的记录正文将不会被树枝评估。有谁知道如何评估女巫在记录中使用的枝条功能?这个问题的最佳实践是什么?
答案 0 :(得分:4)
ContentType中的字段需要allowtwig: true
告诉Bolt你信任字段/编辑器允许这样做,例如:
body:
type: html
allowtwig: true
答案 1 :(得分:1)
问题是Twig不会在Twig变量中渲染Twig。您可以创建一个转义函数来执行此操作。无论如何,这可能不是让CMS用户可以使用Twig的最佳选择,因为这可以让他们完全访问您的代码。 无论如何,这是一个可以帮助你的逃生功能
$this->app['twig']->getExtension('core')->setEscaper('code', function($twigEnv, $string, $charset) {
$twig = clone $this->app['twig'];
$twig->setLoader(new \Twig_Loader_String());
return $twig->render($string);
});
然后你可以使用树枝过滤器&#34;代码&#34;在你的模板中。 e.g:
{{ record.body|escape('code') }}