【问题标题】:Create event in symfony2 to render a twig file在 symfony2 中创建事件以渲染树枝文件
【发布时间】:2015-01-19 06:18:35
【问题描述】:

我是 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 %}

调用从 VersionBundle 调用函数的“ViewHelper”(我来自 Zend ;-))。但现在棘手的部分: VerionBundle 仅在 AppKernel 中为“开发”和“测试”环境注册。 这就是为什么我创建“版本”块而不是直接在基本树枝文件中调用 ViewHelper。

但我不知道如何创建一个事件来首先呈现版本树枝模板,以便数据将传递给基础树枝。

【问题讨论】:

  • 我不明白你为什么称它为“事件”。你为什么不把这个带有版本信息的 div 块添加到你的基本模板中呢?你到底需要什么?
  • 我不想在基本模板中询问环境并决定是否渲染版本块...在“在线”中,我没有注册捆绑包,所以 versionString() 不是可用...这就是我使用版本块的原因...我想避免错误/警告 Zend 具有相同的功能,称为占位符...

标签: php symfony events twig


【解决方案1】:

我可能会改变您尝试这样做的方式,使用更多 Symfony 功能并避免将 Zend 定义为“助手”。尽量减少 Twig 是一个很好的经验法则,只需从模板接收的数据中呈现视图。

首先,在parameters_dev.ymlparameters_test.yml 文件中定义version 变量(在app/config 中)。示例:

parameters:
    version: 32

parameters.yml中定义为version: ~

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 %}

希望对你有帮助!

【讨论】:

  • 这看起来很简单(什么是好的)。只有一个问题,它不便携。如果我在我的其他项目中使用它,我必须一直(好吧,不多)将代码块粘贴到每个项目中。
  • 你的意思是在一个完全不同的项目中? (不是同一个 Symfony 实例,不是同一个 Symfony 应用程序和捆绑包)
猜你喜欢
  • 2017-02-13
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-18
相关资源
最近更新 更多