Как я могу создать отдельные веб-каталоги для каждого приложения в Symfony? - PullRequest
1 голос
/ 26 июня 2009

Например, у меня есть два приложения: 'frontend' и 'backend'. Я бы хотел, чтобы мой каталог / web был настроен так, чтобы / web / frontend обслуживал ресурсы 'frontend', а '/ web / backend' обслуживал ресурсы 'backend' без необходимости изменять все пути изображений и т.д.

1 Ответ

1 голос
/ 26 июня 2009

Из документации Symfony , выполнение этого в config.php каждого приложения должно работать [пример показывает apps / backend / config / config.php]

sfConfig::add(array(
  'sf_web_dir'      => SF_ROOT_DIR.'/web/backend',
  'sf_upload_dir'   => SF_ROOT_DIR.'/web/backend'.sfConfig::get('sf_upload_dir_name'),
));

По какой-то причине этот метод не работает. Если вы посмотрите на все переменные, определенные внутри sfConfig, вы заметите, что вам нужно изменить больше, чем sf_web_dir и sf_upload_dir, чтобы все заработало.

Одним из вариантов будет ручное переопределение всех переменных внутри sfConfig, которые указывают на веб-каталог внутри config.php каждого приложения. Чтобы увидеть список всех переменных, попробуйте

<?php echo var_dump(sfConfig::getall()); ?>

Ваш другой вариант (способ, которым я делал это раньше) - сделать это в конфигурации Apache. Настройки вашего виртуального хоста для бэкэнда будут выглядеть примерно так:

<VirtualHost *>
  ServerName backend.dev
  DocumentRoot "PATH_TO_SYMFONY_PROJECT/web/backend"
  DirectoryIndex index.php
  Alias /sf /usr/local/lib/php/data/symfony/web/sf
  <Directory "/usr/local/lib/php/data/symfony/web/sf">
  AllowOverride All
  Allow from All
  </Directory>
  <Directory "PATH_TO_SYMFONY_PROJECT/web/backend">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

Затем вам нужно будет скопировать backend.php, backend_dev.php [и, возможно, index.php, если backend является вашей средой по умолчанию] в / web / backend, и в каждом из этих файлов измените

define('SF_ROOT_DIR',    realpath(dirname(__FILE__).'/..'));

до

define('SF_ROOT_DIR',    realpath(dirname(__FILE__).'/../..'));

и тебе должно быть хорошо. Я предпочитаю этот метод, но если у вас нет настроенных виртуальных хостов, у вас может не быть этой опции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...