这似乎是与Symfony2有关的最可怕的主题,因为经过一周的搜索和测试,我仍然无法找到答案。
简而言之,我正在构建一个具有多个子域的应用程序,我想为所有这些子域配置不同的配置,同时从/ src共享多个bundle,更重要的是,导入中央配置和路由(以及每个应用程序自己的)
我开始创建个人/应用程序目录,AppKernal.php文件和引导程序文件。这个问题的主要问题在另一个问题中有详细说明,但没有得到答案(不是我责怪任何TBH:D)。 Symfony2 multiple config and routing files for subdomain routing
我找到了关于此事的讨论,Fabian甚至参与了这个: https://groups.google.com/forum/?fromgroups=#!topic/symfony-devs/yneojUuFiqw
关于PR的一次讨论,github在2.2版本中提供支持(我听说仍然是6mo) https://github.com/symfony/symfony/pull/3378
之前有没有人做过这件事?这个过程很容易解释吗?有没有可用的信息来帮助解决这个问题?
我几乎处于看似无法实现的阶段。对于像Symfony这样被吹捧的系统,我觉得这很奇怪,特别是当Symfony1.4看起来很容易做到这一点时。
更新
感谢您的回复。挑战在于,有一种层次的配置。这些配置反过来导入自己的routing.yml文件。
例如:域http://testing.api.mydomain.com将包含以下配置:
config_api.yml - > config_testing.yml - > config_dev.yml - > config.yml
全部导入自己的routing.yml文件。但只加载了config_api.yml中的那个。似乎框架:router:config选项覆盖了其他配置文件中的先前用法,而不是扩展。
平心而论,应用代码的位置无关紧要。具有分层路由的分层配置似乎是gotacha。
干杯
答案 0 :(得分:12)
通过在多个内核中分割代码,可以实现多个应用程序项目。
然后你可以受益:
我在此处描述了整个过程:http://jolicode.com/blog/multiple-applications-with-symfony2您可以在此处找到示例分发:https://github.com/damienalexandre/symfony-standard
答案 1 :(得分:8)
对不起恶作剧......
我只想说我已经研究过Symfony2的多个应用程序结构。从版本2.4开始,当路由支持hostname based routing时,不需要多个应用程序。
您现在需要做的就是分开您的应用程序"进入不同的捆绑包,比如AcmeSiteBundle
和AcmeApiBundle
,然后在app/config/routing.yml
:
acme_site:
host: "www.{domain}"
resource: "@AcmeSiteBundle/Resources/config/routing.yml"
prefix: /
defaults:
domain: "%domain%"
requirements:
domain: "%domain%"
acme_api:
host: "api.{domain}"
resource: "@AcmeApiBundle/Resources/config/routing.yml"
prefix: /
defaults:
domain: "%domain%"
requirements:
domain: "%domain%"
请务必在domain
app/config/parameters.yml
参数
parameters:
.....
domain: example.com
答案 2 :(得分:5)
您可以使用testing / Dev示例创建不同的配置:
第1步 创建与子域名一样多的web / app.php文件。
web/app_subdomainx.php
第2步 在每个app_subdomain_X.php文件中更改配置:
$kernel = new AppKernel('subdomainx', false);
第3步 创建与您的环境匹配的配置文件
config_subdomainx.yml
security_subdomainx.yml
第4步
通过
访问您的特定域名/web/app_subdomainx.php
PS:
保持config.yml用于常见配置(如数据库连接)并将config.yml包含到config_subdomainx.yml
imports:
- { resource: config.yml }
答案 3 :(得分:0)
你可以尝试在github上找到一些东西。我发现以下Bundle应该这样做。 Imikay RouterBundle
答案 4 :(得分:0)
基本上Fabien是对的,没有理由拥有多个应用程序,如果你真的需要一个不同的应用程序,它可能是一个不同的项目。可以像在Web上看到的任何其他捆绑包一样轻松共享捆绑包和库。 然后,您可以将设置的一小部分属于每个项目的应用程序部分中称为“app”的每个项目。 如果他们共享整个代码,那么这只是每个子域的配置层次结构的问题,考虑到您想要共享配置的某些部分,这可能是您的情况。
Symfony有很多方法可以让你重新使用非常好的代码,但是框架并不意味着有很多应用程序,如果你想尝试破解它,继续,但是你没有使用框架了。这就是为什么你找不到例子,不是因为它很可怕,它不是那么难修改,它只是丑陋的,IMO。
答案 5 :(得分:0)
也许你可以尝试这个捆绑,在同一个应用程序和数据库上处理多个域名网站: https://github.com/AppVentus/MultiDomainBundle