在 Symfony 中根据 URL 加载子包
Load Child Bundle depending on URL in Symfony
我创建了一个为某些用例提供默认功能的包。
不,我想将 X URLs 定向到该项目。到目前为止没问题,所有 URL 都指向 /web
文件夹。
但现在我想创建子包来修改每个 URL 的一些功能/行为/外观。为不同的 URL 加载不同的子包的最佳方法是什么?
我的方法是检测 AppKernel
中的 URL 并在此时加载特定的子包。是否有意义或有更好的方法?
确实将您的代码放在 AppKernel 中似乎是处理该问题的好方法,但您会遇到缓存问题。
示例:
如果您的请求 A 加载包 A,它将被缓存。
如果您的请求 B 加载了 bundle B 但没有加载 bundle A,您将收到与加载 bundle A 相关的错误 类.
另一个问题是您的路由,您必须为不同的包集创建单独的路由文件。
我的方法将依赖于环境,在你的前端控制器中,你将捕获主机然后使用不同的环境 (hosta_dev / hosta_prod / hostb_dev / hostb_prod) 每个 URL。这将创建单独的缓存并允许您拥有单独的配置/路由文件。
你仍然需要在你的 AppKernel 中进行修改(例如,你必须加载 "dev" 包,而不仅仅是当环境是 "dev" 或 "test"但如果环境包含 "dev" 或 "test").
希望对您有所帮助。
您可以创建三个服务:
- 主要
A
继承自 main
B
继承自 main
然后在你的配置中默认定义my_service
到main
。
在使用 url A 为控制器初始化服务时,将其重新配置为 A
。 B
.
相同
我创建了一个为某些用例提供默认功能的包。
不,我想将 X URLs 定向到该项目。到目前为止没问题,所有 URL 都指向 /web
文件夹。
但现在我想创建子包来修改每个 URL 的一些功能/行为/外观。为不同的 URL 加载不同的子包的最佳方法是什么?
我的方法是检测 AppKernel
中的 URL 并在此时加载特定的子包。是否有意义或有更好的方法?
确实将您的代码放在 AppKernel 中似乎是处理该问题的好方法,但您会遇到缓存问题。
示例:
如果您的请求 A 加载包 A,它将被缓存。 如果您的请求 B 加载了 bundle B 但没有加载 bundle A,您将收到与加载 bundle A 相关的错误 类.
另一个问题是您的路由,您必须为不同的包集创建单独的路由文件。
我的方法将依赖于环境,在你的前端控制器中,你将捕获主机然后使用不同的环境 (hosta_dev / hosta_prod / hostb_dev / hostb_prod) 每个 URL。这将创建单独的缓存并允许您拥有单独的配置/路由文件。
你仍然需要在你的 AppKernel 中进行修改(例如,你必须加载 "dev" 包,而不仅仅是当环境是 "dev" 或 "test"但如果环境包含 "dev" 或 "test").
希望对您有所帮助。
您可以创建三个服务:
- 主要
A
继承自 mainB
继承自 main
然后在你的配置中默认定义my_service
到main
。
在使用 url A 为控制器初始化服务时,将其重新配置为 A
。 B
.