11

これは、Symfony2 に関連する最も恐ろしいトピックのようです。1 週間の検索とテストの後、私はまだこれに対する答えを見つけることができません。

要するに、私はいくつかのサブドメインを持つアプリケーションを構築しています。/src から複数のバンドルを共有し、さらに重要なことに、中央の構成とルートをインポートしながら、それらすべてに異なる構成が必要です (各アプリ独自の)

個々の /app ディレクトリ、AppKernal.php ファイル、およびブートストラップ ファイルを作成する道をたどりました。これに関する主な問題は、別の質問で詳しく説明されていますが、回答がありませんでした (TBH :D のせいではありません)。 サブドメイン ルーティング用の Symfony2 複数の構成ファイルとルーティング ファイル

この問題に関する議論を見つけました。ファビアンもこれに参加しています: https://groups.google.com/forum/?fromgroups=#!topic/symfony-devs/yneojUuFiqw

そして、バージョン 2.2 でサポートを提供するための github への PR に関するこの議論 (まだ 6 か月先と聞いています) https://github.com/symfony/symfony/pull/3378

以前にこれを行った人はいますか?プロセスは説明するのに十分簡単ですか?これを支援するために利用できる情報はありますか?

私は、これが単に不可能であるように見える段階にほとんどあります。特にSymfony1.4がこれをかなり簡単に行ったように見える場合、これはSymfonyのように宣伝されているシステムにとって本当に奇妙だと思います。

アップデート

ご回答ありがとうございます。課題は、構成の階層があることです。これらの構成は、独自の routing.yml ファイルをインポートします。

たとえば、ドメインhttp://testing.api.mydomain.comには次の構成が含まれます。

config_api.yml -> config_testing.yml -> config_dev.yml -> config.yml

すべて独自の routing.yml ファイルをインポートします。ただし、config_api.yml の 1 つだけが読み込まれます。フレームワークのようです: router: config オプションは、拡張するのではなく、他の構成ファイルの以前の使用法をオーバーライドします。

公平を期すために、アプリ コードの場所は重要ではありません。階層的なルートを持つ階層的な構成を持つことは、落とし穴のようです。

乾杯

4

6 に答える 6

12

コードを複数のカーネルに分割することで、複数のアプリケーション プロジェクトを実現できます。

次のメリットがあります。

  • 複数の Web ルート (ドメインが異なる場合に便利)
  • 共有および特定の設定 (インポート経由)
  • バンドルの明確な分離...

ここでプロセス全体を説明しました: http://jolicode.com/blog/multiple-applications-with-symfony2そして、ここで配布例を見つけることができます: https://github.com/damienalexandre/symfony-standard

于 2013-03-08T10:58:56.617 に答える
8

ネクロしてごめんなさい…

Symfony2 の複数のアプリケーション構造も調査したと言いたいだけです。バージョン 2.4 以降、ルーティングがホスト名ベースのルーティングをサポートする場合、複数のアプリは不要になりました。

あとは、「アプリ」を異なるバンドルに分けるだけです。たとえば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
于 2014-06-13T17:36:43.200 に答える
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 :

一般的な構成 (db 接続など) 用に config.yml を保持し、config.yml を config_subdomainx.yml に含めます。

imports:
    - { resource: config.yml }
于 2012-10-01T10:55:28.750 に答える
0

github で何かを見つけようとすることができます。これを行う必要がある次のバンドルを見つけました。Imikay ルーターバンドル

于 2012-10-01T09:55:37.490 に答える
0

基本的に Fabien の言うとおりです。複数のアプリケーションを使用する理由はありません。別のアプリケーションが本当に必要な場合は、おそらく別のプロジェクトです。バンドルとライブラリは、Web で表示される他のバンドルと同様に簡単に共有できます。次に、各プロジェクトのアプリ部分で、「アプリ」と呼ぶそれぞれのものに属するセットアップの小さな部分を持つことができます。それらがコード全体を共有している場合、それは各サブドメインの構成階層の問題にすぎません。これは、構成の一部を共有したい場合に当てはまります。

Symfony には非常に優れたコードを再利用できるようにする多くの方法がありますが、フレームワークは多くのアプリケーションを持つことを意図したものではありません。ハッキングしたい場合は先に進んでください。ただし、フレームワークはもう使用していません。それが怖いからではなく、変更するのがそれほど難しくなく、ただ醜いだけなので、例を見つけることができないのはそのためです。

于 2012-10-02T15:03:48.680 に答える