由于包括内容翻译在内的多种原因,我必须构建一个简单的CMS来呈现我的Symfony2应用程序的页面。从字符串/数据库渲染内容并生成链接
我现在的问题是,接缝不可能呈现来自字符串的内容。小枝只接受文件。我的内容可能包含动态部分,如语言环境或类似内容,因此枝条的渲染能力将非常有用。
我试图使用TwibstringBundle来渲染它,但它的功能非常有限,并且它不适用于路径功能。
任何建议来解决这个问题?
由于包括内容翻译在内的多种原因,我必须构建一个简单的CMS来呈现我的Symfony2应用程序的页面。从字符串/数据库渲染内容并生成链接
我现在的问题是,接缝不可能呈现来自字符串的内容。小枝只接受文件。我的内容可能包含动态部分,如语言环境或类似内容,因此枝条的渲染能力将非常有用。
我试图使用TwibstringBundle来渲染它,但它的功能非常有限,并且它不适用于路径功能。
任何建议来解决这个问题?
看到http://twig.sensiolabs.org/doc/functions/template_from_string.html 和http://symfony.com/doc/current/cookbook/templating/twig_extension.html#register-an-extension-as-a-service
{% include template_from_string("Hello {{ name }}") %}
{% include template_from_string(page.template) %}
由于串加载器默认不加载,你需要将它添加到你的配置。
# src/Acme/DemoBundle/Resources/config/services.yml
acme.twig.extension.loader:
class: Twig_Extension_StringLoader
tags:
- { name: 'twig.extension' }
其中Acme/acme是您的应用程序名称,DemoBundle是您希望为其启用的包。
Symfony的2.7使得从PHP这个简单,太:
$twig = $this->get('twig');
$template = twig_template_from_string($twig, 'Hello, {{ name }}');
$output = $template->render(['name' => 'Bob']));
为什么只有Symfony 2.7?也适用于Symfony 2.3。 – 2015-07-13 09:49:27
不适用于我。 '我试图从命名空间'AppBundle \ Controller'' '尝试从名称空间调用函数“twig_template_from_string”。但是,这对我有用:'$ this-> get('twig') - > createTemplate('Hello,{{name}} ');' – Atan 2016-03-17 11:12:06
为什么奇怪的全局函数?对于一个像树枝一样的项目来说,很不错 – mblaettermann 2016-04-21 11:18:29
twig_template_from_string
功能的源代码如下:
function twig_template_from_string(Twig_Environment $env, $template)
{
return $env->createTemplate($template);
}
这意味着,如果你已经有了一个twig environment
那么最好打电话直接:
$template = $env->createTemplate($templateString);
$parsedContent = $template->render(array('a'=>'b'));
它们是如何存储在数据库中的? – max 2012-03-22 00:46:21
它们存储为带有一些html标记的简单文本。 – madc 2012-03-22 12:20:57