Symfony:多个类似的包与一个主包?
假设我创建了一个新闻门户捆绑包“NewsBundle”,其中包含文章、标签、事件、大量关系,非常庞大和复杂 现在我想复制这一点无数次,并创建一个时尚新闻门户网站,汽车新闻门户网站,狗新闻门户网站等,每一个都可以通过自己的域。门户仅在模板、翻译和资产方面有所不同。因为我想要实现复杂的报告,所以我希望所有的东西都在一个数据库中,并用相应的门户标记所有实体 我的问题是:我如何组织代码 首先我发现,我可以使用路由为每个域拥有相同的应用程序,但不同的捆绑包 然后我发现,我可以扩展我的主包。但这似乎只起作用一次 就像我做的所有带有注释的路由一样,从主节点继承路由似乎不起作用 最难的问题之一是将门户开关放在何处。在某个地方,我需要设置一个变量,告诉它是fashion还是dogs门户,这样我就可以相应地过滤所有存储库中的内容 我在app.php中这样做了,这肯定是最糟糕的做法 最后,我希望能够轻松推出新门户,而不需要重复代码 任何想法都非常感谢 来自汉堡的问候,Symfony:多个类似的包与一个主包?,symfony,Symfony,假设我创建了一个新闻门户捆绑包“NewsBundle”,其中包含文章、标签、事件、大量关系,非常庞大和复杂 现在我想复制这一点无数次,并创建一个时尚新闻门户网站,汽车新闻门户网站,狗新闻门户网站等,每一个都可以通过自己的域。门户仅在模板、翻译和资产方面有所不同。因为我想要实现复杂的报告,所以我希望所有的东西都在一个数据库中,并用相应的门户标记所有实体 我的问题是:我如何组织代码 首先我发现,我可以使用路由为每个域拥有相同的应用程序,但不同的捆绑包 然后我发现,我可以扩展我的主包。但这似乎只起作用
Boris您需要将您的
新闻包
保存在您的应用程序中,并有许多围绕它运行的包,每个门户对应一个
这里并不真正需要bundle继承。门户捆绑包依赖于新闻捆绑包
,但不从中继承
与特定门户相关的路由配置、模板和其他行为应包含在相关包中。每个捆绑包中都有一个Resources
文件夹;这是您需要放置特定路由、转换、配置和模板的地方
app/config/routing.yml
是中心路由配置文件,您需要在其中引用所有其他routing.yml
文件
至于交换机,我不能详细回答,但我认为应该在服务器应用程序中设置它。
apache
或nginx
(或其他…。您的问题可以通过不同的环境解决。每个门户都是不同的环境。根据请求的域
,您可以将web服务器设置为指向不同的前端控制器
例如:
对于domainnews.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格式更具可读性,前缀策略更灵活,路由逻辑保持不变。