1

たとえば、「フロントエンド」と「バックエンド」の 2 つのアプリケーションがあります。「/web/frontend」が「フロントエンド」アセットを提供し、「/web/backend」が「バックエンド」アセットを提供するように /web ディレクトリを設定して、すべての画像パスを変更する必要がないようにしたいと考えています。等

4

1 に答える 1

1

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以外の変更が必要であることがわかります。

1つのオプションは、各アプリのconfig.php内のWebディレクトリを指すsfConfig内のすべての変数を手動でオーバーライドすることです。すべての変数のリストを表示するには、試してください

<?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]を/web / backendにコピーする必要があり、これらの各ファイルで次のように変更します。

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

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

そして、あなたは良いはずです。私はこの方法を好みますが、仮想ホストを設定していない場合は、このオプションがない可能性があります。

于 2009-06-26T13:24:52.740 に答える