Symfony 2多个应用程序?

Aar*_*ryn 11 symfony

这似乎是与Symfony2有关的最可怕的话题,因为经过一周的搜索和测试,我仍然无法找到答案.

简而言之,我正在构建一个具有多个子域的应用程序,我想为所有这些子域提供不同的配置,同时从/ src共享多个bundle,更重要的是,导入中央配置和路由(以及每个应用程序自己的)

我开始创建个人/应用程序目录,AppKernal.php文件和引导程序文件.这个问题的主要问题在另一个问题中有详细说明,但没有得到答案(不是我责怪任何人TBH:D). Symfony2用于子域路由的多个配置和路由文件

我发现有关此事的讨论,Fabian甚至参与了这个:https://groups.google.com/forum/?fromgroups =#!topic / symfony-devs / yoojUuFiqw

这个讨论关于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.

干杯

Dam*_*ien 12

通过在多个内核中拆分代码,可以实现多个应用程序项目.

然后你可以受益:

  • 多个Web根(对于不同的域有用)
  • 共享和特定配置(通过导入)
  • 清洁分离捆绑...

我在这里介绍的全过程:http://jolicode.com/blog/multiple-applications-with-symfony2,你可以在这里找到一个例子分布:https://github.com/damienalexandre/symfony-standard


Pop*_*lus 8

对不起,这是一个坏死的......

我只想说我已经研究过Symfony2的多种应用程序结构.从版本2.4开始,当路由支持基于主机名的路由时,不需要多个应用程序.

你现在需要做的是独立的"应用"到不同的包,说AcmeSiteBundleAcmeApiBundle,然后在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%"
Run Code Online (Sandbox Code Playgroud)

记得要domain设置参数app/config/parameters.yml

parameters:
    .....
    domain: example.com
Run Code Online (Sandbox Code Playgroud)


Cho*_*hop 5

您可以使用testing/Dev示例创建不同的配置:

步骤1 创建与子域名一样多的web/app.php文件.

web/app_subdomainx.php
Run Code Online (Sandbox Code Playgroud)

步骤2 在每个app_subdomain_X.php文件中更改配置:

$kernel = new AppKernel('subdomainx', false);
Run Code Online (Sandbox Code Playgroud)

步骤3 创建与您的环境匹配的配置文件

config_subdomainx.yml
security_subdomainx.yml
Run Code Online (Sandbox Code Playgroud)

第4步

通过访问您的特定域名

/web/app_subdomainx.php

PS:

保持config.yml用于常见配置(如数据库连接)并将config.yml包含到config_subdomainx.yml中

imports:
    - { resource: config.yml }
Run Code Online (Sandbox Code Playgroud)


sen*_*nsi 0

你可以尝试在github上找一些东西。我发现以下捆绑包应该可以做到这一点。Imikay 路由器捆绑包