【发布时间】:2012-06-11 21:14:18
【问题描述】:
我必须实现使用主题的能力。我试过https://github.com/liip/LiipThemeBundle,它有效。 但是因为我使用的是多站点功能(即 site_id 是根据域名定义的),所以路径应该是这样的:
- app/sites/{site_id}/Resources/themes/phone/BundleName/template.html.twig
- app/sites/{site_id}/Resources/BundleName/views/template.html.twig
- src/BundleName/Resources/themes/phone/template.html.twig
- src/BundleName/Resources/views/template.html.twig
如果我请求 ::template.html.twig 路径将是:
- app/sites/{site_id}/Resources/themes/phone/template.html.twig
- app/sites/{site_id}/Resources/views/template.html.twig
所以问题是:
只有在运行时
$container->get('engine.site')->getId()时才能获取 site_id。我试图进入 Liip\ThemeBundle\Locator\FileLocator 的构造函数并调整$this->path以便能够获得视图app/Resources/sites/{site_id}/的不同站点的路径(但获得app/sites/{site_id}/Resources/会超级好)。但是这样我们当然会在第一次请求并且缓存还没有形成时得到一个错误(«Whoops, looks like something went wrong. InactiveScopeException: You cannot create a service ("request") of an inactive scope ("request").»)。并且所有其他请求都将正常进行。但这真的不是一个解决方案。 从这里的问题是我可以在哪里为模板动态构建路径?LiipThemeBundle 中的所有主题都可以在 config.xml 中设置。 但是我如何动态制作这个列表(我们可以使用
$container->get('engine.site')->getThemes())获取的所有主题?
【问题讨论】:
标签: php frameworks symfony