假设我创建了一个新闻门户包“NewsBundle”,其中包含文章、标签、事件、许多关系,非常庞大和复杂。
现在我想多次复制这个,并创建一个时尚新闻门户、汽车新闻门户、狗新闻门户等等,每个门户都可以通过自己的域使用。门户区别仅在于 模板 , 翻译和 Assets .因为我想实现复杂的报告,所以我希望将所有内容都放在一个数据库中,并使用相应的门户标记所有实体。
我的问题:我如何组织代码?
首先我想通了,我可以使用路由具有相同的应用程序,但 每个域的不同捆绑包 .
然后我发现,我可以 扩展我的主包 .但似乎这只有效一次。
由于我使用注释进行了所有路由,因此从 master 继承路由似乎不起作用?
最难的问题之一是将门户交换机放在哪里。在某处我需要设置一个变量来说明它是时尚门户还是狗门户,以便我可以相应地过滤所有存储库中的内容。
我在 app.php 中这样做了,这肯定是最糟糕的做法。
最后,我希望能够在没有重复代码的情况下轻松推出新门户。
任何想法都非常感谢。
来自汉堡的问候,
鲍里斯
最佳答案
您需要保留您的 NewsBundle
在您的应用程序中,并有许多包围绕它旋转,您打算创建的每个门户都有一个。
这里没有真正需要包继承。您的门户捆绑包取决于 NewsBundle
但不要继承它。
与特定门户相关的路由配置、模板和其他行为应包含在相关包中。有一个Resources
每个包中的文件夹;这是您需要放置特定路由、转换、配置和模板的地方。app/config/routing.yml
是中央路由配置文件,您需要在其中引用所有其他 routing.yml
文件。
至于开关,嗯,我无法详细回答,但我认为它应该在您的服务器应用程序中设置apache
或 nginx
(或其他...)。
关于Symfony:一个大师有多个类似的 bundle ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36408633/