我是symfony2的新手,我正在寻找解决方案来创建一个渲染twig文件的事件。
假设我们有一个基本模板
<!DOCTYPE html>
<html>
<head>
{% block meta %}{% endblock %}
<title>{% block title %}Welcome!{% endblock %}</title>
{% block stylesheets %}{% endblock %}
</head>
<body data-cachetime="{{ cacheTimeStamp() }}">
{% block header %}{% endblock %}
<div id="content">
<div class="container">
{% block content %}{% endblock %}
</div>
</div>
{% block footer %}{% endblock %}
{% block version %}{% endblock %}
{% block javascripts %}{% endblock %}
{% block trackers %}{% endblock %}
</body>
</html>
如您所见,我有一个“版本”块。我创建了一个从文件中读取版本的VersionBundle。版本树枝模板
{% block version %}
<div id="version"><p>Version: {{ versionString() }}</p></div>
{% endblock %}
调用“ViewHelper”(我来自Zend ;-)),它调用VersionBundle中的函数。但现在是棘手的部分: VerionBundle仅在AppKernel中注册“dev”和“test”环境。 这就是为什么我创建'版本'块而不是直接在基本树枝文件中调用ViewHelper。
但我不知道如何创建一个事件来首先渲染版本树枝模板,以便将数据传递给基础树枝。
答案 0 :(得分:0)
我可能会改变您尝试这样做的方式,使用更多的Symfony功能并避免像Zend一样定义Zend。将Twig保持在尽可能小的状态是一个很好的经验法则,只需从模板接收的数据中呈现视图。
首先,在version
和parameters_dev.yml
文件中定义parameters_test.yml
变量(在app/config
中)。例如:
parameters:
version: 32
在version: ~
中将其定义为parameters.yml
。
在app/config/config.yml
文件的所有Twig模板中提供此变量:
twig:
globals:
version: %version%
然后,在version
块定义中,执行以下操作:
{% block version %}
{% if version is not null %}
<div id="version"><p>Version: {{ version }}</p></div>
{% endif %}
{% endblock %}
希望它有所帮助!