Подтвердить что ты не робот

Symfony 2 несколько приложений?

Это, по-видимому, самая страшная тема, связанная с Symfony2, так как после недели поиска и тестирования я все еще не могу найти ответ на этот вопрос.

Вкратце, я создаю приложение, которое будет иметь несколько поддоменов, и я хотел бы иметь другую конфигурацию для всех из них, одновременно используя несколько пакетов из /src и, что более важно, импортировать центральную конфигурацию и маршруты (а также каждое приложение принадлежит)

Я пошел по пути создания каталогов отдельных/приложений, файлов AppKernal.php и загрузочных файлов. Основная проблема с этим подробно описана в другом вопросе, который не получил никаких ответов (не то, чтобы я обвинял кого-либо TBH: D). Несколько конфигурационных и маршрутизирующих файлов Symfony2 для маршрутизации поддоменов

Я нашел дискуссию по этому вопросу, Фабиан даже принимает в этом участие: 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. Похоже, что framework: параметр router: config переопределяет предыдущие применения в других файлах конфигурации, а не расширяет.

Справедливости ради, расположение кода приложения несущественно. Наличие иерархической конфигурации с иерархическими маршрутами, похоже, является gotacha.

Приветствия

4b9b3361

Ответ 1

Несколько проектов приложений могут быть достигнуты путем разделения кода на несколько ядер.

Вы можете воспользоваться:

  • несколько веб-корней (полезно для разных доменов)
  • общая и конкретная конфигурация (через импорт)
  • чистое разделение Связок...

Я описал весь процесс здесь: http://jolicode.com/blog/multiple-applications-with-symfony2, и вы можете найти пример распространения здесь: https://github.com/damienalexandre/symfony-standard

Ответ 2

Извините за некроз...

Я просто хочу сказать, что я рассмотрел также структуру приложения для 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

Ответ 3

Вы можете создать другую конфигурацию, используя пример тестирования /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 для общей конфигурации (например, соединение db) и включите config.yml в config_subdomainx.yml

imports:
    - { resource: config.yml }

Ответ 4

вы можете попытаться найти что-то на github. Я нашел следующий пакет, который должен это сделать. Imikay RouterBundle

Ответ 5

В принципе, Fabien прав, нет причин иметь более одного приложения, если у вас действительно есть потребность в другом приложении, это, вероятно, другой проект. Связки и библиотеки можно легко использовать, как и любой другой пакет, который вы видите в Интернете. Тогда вы можете иметь небольшую часть настройки, принадлежащую каждой вещи, которую вы называете "приложение" в части приложения каждого проекта. Если они разделяют весь код, это просто вопрос иерархии конфигурации для каждого поддомена, что может быть вашим делом, учитывая, что вы хотите поделиться какой-то частью конфигурации.

У Symfony есть много способов, позволяющих вам повторно использовать код, который очень хорош, но структура не предназначена для того, чтобы иметь много приложений, если вы хотите попытаться взломать ее, продолжайте, но тогда вы не используете фреймворк больше. И почему вы не можете найти примеры, а не потому, что это страшно, это было бы не так сложно изменить, это было бы просто уродливо, IMO.

Ответ 6

Возможно, вы можете попробовать этот пакет, который обрабатывает несколько доменных сайтов в одном приложении и базе данных: https://github.com/AppVentus/MultiDomainBundle.