评估记录中的树枝功能
Evaluate twig functions in record
我创建了一个螺栓扩展,它提供了一个新的树枝功能 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 }}
我认为问题在于,twig 模板将在分配记录正文之前呈现。所以我记录的正文不会被树枝评估。有谁知道如何评估树枝函数 在记录中的使用?这个问题的最佳实践是什么?
问题是 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);
});
然后您可以在模板中使用 twig 过滤器 "code"。例如:
{{ record.body|escape('code') }}
ContentType 中的字段需要 allowtwig: true
告诉 Bolt 你相信 field/editor 允许这样做,例如:
body:
type: html
allowtwig: true
我创建了一个螺栓扩展,它提供了一个新的树枝功能 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 }}
我认为问题在于,twig 模板将在分配记录正文之前呈现。所以我记录的正文不会被树枝评估。有谁知道如何评估树枝函数 在记录中的使用?这个问题的最佳实践是什么?
问题是 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);
});
然后您可以在模板中使用 twig 过滤器 "code"。例如:
{{ record.body|escape('code') }}
ContentType 中的字段需要 allowtwig: true
告诉 Bolt 你相信 field/editor 允许这样做,例如:
body:
type: html
allowtwig: true