Symfony:一个大师有多个类似的 bundle ?

标签 symfony

假设我创建了一个新闻门户包“NewsBundle”,其中包含文章、标签、事件、许多关系,非常庞大和复杂。

现在我想多次复制这个,并创建一个时尚新闻门户、汽车新闻门户、狗新闻门户等等,每个门户都可以通过自己的域使用。门户区别仅在于 模板 , 翻译 Assets .因为我想实现复杂的报告,所以我希望将所有内容都放在一个数据库中,并使用相应的门户标记所有实体。

我的问题:我如何组织代码?

首先我想通了,我可以使用路由具有相同的应用程序,但 每个域的不同捆绑包 .

然后我发现,我可以 扩展我的主包 .但似乎这只有效一次。

由于我使用注释进行了所有路由,因此从 master 继承路由似乎不起作用?

最难的问题之一是将门户交换机放在哪里。在某处我需要设置一个变量来说明它是时尚门户还是狗门户,以便我可以相应地过滤所有存储库中的内容。

我在 app.php 中这样做了,这肯定是最糟糕的做法。

最后,我希望能够在没有重复代码的情况下轻松推出新门户。

任何想法都非常感谢。

来自汉堡的问候,
鲍里斯

最佳答案

您需要保留您的 NewsBundle在您的应用程序中,并有许多包围绕它旋转,您打算创建的每个门户都有一个。

这里没有真正需要包继承。您的门户捆绑包取决于 NewsBundle但不要继承它。

与特定门户相关的路由配置、模板和其他行为应包含在相关包中。有一个Resources每个包中的文件夹;这是您需要放置特定路由、转换、配置和模板的地方。
app/config/routing.yml是中央路由配置文件,您需要在其中引用所有其他 routing.yml文件。

至于开关,嗯,我无法详细回答,但我认为它应该在您的服务器应用程序中设置apachenginx (或其他...)。

关于Symfony:一个大师有多个类似的 bundle ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36408633/

相关文章:

postgresql - 主键上带有 PostgreSQL 序列的 Doctrine 更新模式

symfony - 如何将服务注入(inject) Symfony 2 Data Fixtures?

forms - Symfony2 : problems rendering the translation-form with A2lixTranslationFormBundle and Gedmo\DoctrineExtensions Translatable

php - 如何检查哪个@route触发了Symfony2中的Controller::Action?

php - Symfony2 : disable Twig cache

forms - 整数字段的 Symfony 表单验证

symfony - 注册和重置表格始终可用

忽略 ManyToOne 实体上的 Symfony2/Doctrine UniqueEntity

symfony - 无法在 SonataAdminBundle::standard_layout.html.twig 中找到模板 "SonataCoreBundle:FlashMessage:render.html.twig"

为 storage_id 设置 session.storage.filesystem 时 Symfony2 登录失败