【问题标题】:Change templates/views location in Symfony2在 Symfony2 中更改模板/视图位置
【发布时间】:2013-02-13 12:36:43
【问题描述】:

我将致力于为每个域具有不同主题的项目(同一个应用程序将服务于多个域)。

  1. 我需要完全在应用程序文件夹之外更改模板的位置,可能在另一个卷上
  2. 我需要让它适用于具有多个主题的多个域 - 我猜是缓存问题

S 如何用 Symfony2 和 twig 做这些事情?

编辑:我会试着问这个问题:我需要重写什么或在哪里获得自定义逻辑来定位 symfony 用来呈现页面的特定模板。

【问题讨论】:

标签: php symfony twig


【解决方案1】:

我不能说你问题的第一点是否是一种不好的做法(即使可能也不知道,但我会说是的)。

但是,我要做的是某种“管理器”,负责根据您自己的逻辑选择哪种模板渲染。动作和视图之间的某种“中间层”。

您可以将其创建为服务并在任何地方使用,而无需每次都实例化它。
它可以读取配置文件,甚至(但弹性较小)使用类内部配置。

算法可能是这样的:

  • 考虑您的要求
  • “吃掉”数据并“吐出”正确的模板(名称)
  • 将模板(名称)传递给您的视图
  • (动态地)扩展您的经理提供的模板

请不要问我一些代码,因为它可能会导致数百行:)

【讨论】:

  • 是的,我相信它,实际上必须至少有 100 行代码和几个类 - 缓存和模板位置。我只是问什么类或什么服务,我如何告诉 Symfony 使用我的模板定位系统以及我需要注意什么。
  • @ZdeněkTopič:您必须根据自己的规则编写自己的服务并将响应(要渲染的模板)传递给您的视图,该视图将简单地渲染它
  • 必须有其他方法,比如重写一些模板定位器。我不认为唯一的解决方案是在每个操作中传递该特定模板以在控制器中呈现。
  • @ZdeněkTopič:我想这是唯一的解决方案。或者,也许,您可以调用一种“beforeStart”操作,您可以在“全局”模板中设置您要搜索的所有内容......但我不是树枝专家,所以也许听听其他建议(如果有的话):)
  • github.com/liip/LiipThemeBundle - 看看这个。我只需要弄清楚它是如何工作的,然后按照我的方式去做。
猜你喜欢
  • 1970-01-01
  • 2017-05-10
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-25
相关资源
最近更新 更多