Symfony:多个类似的包与一个主包?

Symfony:多个类似的包与一个主包?,symfony,Symfony,假设我创建了一个新闻门户捆绑包“NewsBundle”,其中包含文章、标签、事件、大量关系,非常庞大和复杂 现在我想复制这一点无数次,并创建一个时尚新闻门户网站,汽车新闻门户网站,狗新闻门户网站等,每一个都可以通过自己的域。门户仅在模板、翻译和资产方面有所不同。因为我想要实现复杂的报告,所以我希望所有的东西都在一个数据库中,并用相应的门户标记所有实体 我的问题是:我如何组织代码 首先我发现,我可以使用路由为每个域拥有相同的应用程序,但不同的捆绑包 然后我发现,我可以扩展我的主包。但这似乎只起作用

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

现在我想复制这一点无数次,并创建一个时尚新闻门户网站,汽车新闻门户网站,狗新闻门户网站等,每一个都可以通过自己的域。门户仅在模板翻译资产方面有所不同。因为我想要实现复杂的报告,所以我希望所有的东西都在一个数据库中,并用相应的门户标记所有实体

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

首先我发现,我可以使用路由为每个域拥有相同的应用程序,但不同的捆绑包

然后我发现,我可以扩展我的主包。但这似乎只起作用一次

就像我做的所有带有注释的路由一样,从主节点继承路由似乎不起作用

最难的问题之一是将门户开关放在何处。在某个地方,我需要设置一个变量,告诉它是fashion还是dogs门户,这样我就可以相应地过滤所有存储库中的内容

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

最后,我希望能够轻松推出新门户,而不需要重复代码

任何想法都非常感谢

来自汉堡的问候,
Boris

您需要将您的
新闻包
保存在您的应用程序中,并有许多围绕它运行的包,每个门户对应一个

这里并不真正需要bundle继承。门户捆绑包依赖于
新闻捆绑包
,但不从中继承

与特定门户相关的路由配置、模板和其他行为应包含在相关包中。每个捆绑包中都有一个
Resources
文件夹;这是您需要放置特定路由、转换、配置和模板的地方

app/config/routing.yml
是中心路由配置文件,您需要在其中引用所有其他
routing.yml
文件


至于交换机,我不能详细回答,但我认为应该在服务器应用程序中设置它。
apache
nginx
(或其他…。

您的问题可以通过不同的环境解决。每个门户都是不同的环境。根据请求的
,您可以将web服务器设置为指向不同的前端控制器

例如:

对于domain
news.domain.com
,您的前端控制器将是
web/app\u news.php
。它将包含以下行:

$kernel = new AppKernel('news', false);

它将自动从
app/config/config\u news.yml
加载配置。在该配置中,您可以为门户指定所有特定参数。然后,您只需为资源(如翻译)实现特殊的加载程序,这些资源将从
config\u news.yml
中指定的路径加载资源。我了解到,我可以将.yml配置文件添加到包中。在那里我可以存储包的门户ID。从我读到的帖子中,扩展主包意味着我无法从父包获取路由。所以我想我必须重写从注释到yml的所有路径。然后我可以将它们存储在子包中并继承它们。对吗?这些入口的路线是一样的吗?你打算如何区分它们?这是个好建议。问题是:门户几乎是一样的,大约有50个。我真的需要增加一条新路线50次吗?还是有更好的方法?如果你的路线每次都不一样,为什么。如果它们相似,您可以在您的基本控制器中使用,并且每个捆绑包使用不同的。再一次,我不确定这会有多好——我不确定在基本控制器中声明的路由是否会传播到它的子级。不过,这需要与主机配置相结合才能正常工作。此外,我发现,路由仍然存在问题。希望有帮助。关于路由,在我看来,根据我自己的经验,YML格式更具可读性,前缀策略更灵活,路由逻辑保持不变。