6

リクエストがないため、Symfony2 の構成内にベース URL への参照がないことはわかっています。アプリケーションは cli または Web サーバー内で実行できるため、リクエストに依存することはできません。それでも、スタイルシートまたは JavaScript ベース URL (ローカル URL である jquery ローカル パスを設定できる JQueryHelperBundle など) を要求する構成があります。問題は、次のように変更することなく、構成のベース URL を動的に設定する方法があるかどうかです。

  • アプリケーションは、設定を変更することなく、www/myproject または www/foo/myproject のいずれであっても、開発中の任意のディレクトリから移動できます。
  • Apache を使用したベース URL の書き換えが検出されることを除いて、本番環境は同じように機能します (ベース URL が「/」として Web ディレクトリにマップされる仮想ホスティングが一般的です)。

そのベース URL 情報を取得する方法はありますか? $_SERVER['DOCUMENT_ROOT']カーネルルートディレクトリを差し引いた差を使用すると、そのようなベースURLを検出する方法になりますか? しかし、virtualhost が URL を Web ディレクトリの / にリベースするのはどうでしょうか? ベース URL をハードコーディングすると、プロジェクトが開発中の場所に完全に結合され、プロジェクトを移動するたびにベース URL を変更する必要があり、面倒です。

では、リクエストに依存せずに、環境に応じて、Symfony2 の構成内でベース URL を動的に検出する方法はありますか?

4

1 に答える 1

0

私はサービスでそれをしなければならなかったので、ルーターサービスを自分のサービスに注入してから:

$baseUrl = $router->getContext()->getHost();

しかし、私はそれを Symfony2 フレームワークの実際のフィクスチャというよりハックと考えました。たとえば、Controller では絶対 URL を簡単に生成できます (symfony book の例):

$router->generate('blog_show', array('slug' => 'my-blog-post'), true);

小枝テンプレートには、 {{ url }} 関数があります

この助けを願っています

于 2011-06-17T08:48:09.807 に答える