我有一个 symfony 项目,其中有多个皮肤/模板,它们有自己的路线,有人知道正确的设置吗?
- 每个皮肤/模板都是自己的 bundle ,因为它不仅是皮肤和 Assets ,还可能是某些皮肤中可能存在的服务。
- 主机名决定皮肤。
- 使用自定义 RouteLoader 加载目标包的 Route.yml。
自定义 RouteLoader 完成这项工作 - 但生成的路由正在被缓存,据我所知,没有办法阻止路由缓存。
一些建议是:
- 创建/{dynamic} 路由,因此手动形成路由..但我不想丢弃路由器的那部分功能,或重构整个项目..
- 在路由中添加模板标识符前缀。这需要我加载所有的route.yml文件,这是不可能的,因为它们共享路径。
有人吗?我真的不能同时进行多个项目,皮肤数量大约是20-30~。
这种设置的原因是因为它是内容即服务..服务的目标,多个客户端使用该项目作为平台,并且他们的设置决定使用哪些模板。
最佳答案
听起来您想根据主机名动态加载包?由于缓存的原因,Symfony 2 不会发生这种情况。尤其是服务。
您最好的选择是为每个皮肤设置一个应用程序,然后执行一些 url majic 来执行所需的 app.php 文件。显然,既然您已经为每种皮肤定义了一个 bundle ,那么数量是有限的,因此拥有多个应用程序应该不会太多或成为负担。
您或许能够解决模板问题。您仍然需要加载所有皮肤包,但您可以调整模板名称或路径,并且可能会得到一些工作。
但是服务呢?除非您开始将主机名附加到服务 ID,否则我看不到任何解决办法。
关于php - Symfony,动态路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33569677/