98

CodeIgniter から Symfony 2 に切り替えています。次の方法の例を教えてください。

  • ベース URL (ルート固有の部分を除いた URL) を取得します。
  • この変数を twig バンドルにグローバルに渡して、すべてのテンプレートで使用できるようにします。
4

14 に答える 14

147

これは twig テンプレートで無料で利用できるようになりました (sf2 バージョン 2.0.14 でテスト済み)。

{{ app.request.getBaseURL() }}

Symfony の以降のバージョン (2.5 でテスト済み) では、以下を試してください。

{{ app.request.getSchemeAndHttpHost() }}
于 2012-07-19T10:25:41.397 に答える
97

このルート URL を取得する必要があるのはなぜですか? 絶対 URL を直接生成できませんか?

{{ url('_demo_hello', { 'name': 'Thomas' }) }}

この Twig コードは、_demo_hello ルートへの完全な http:// URL を生成します。

実際、ウェブサイトのベース URL を取得しても、ホームページ ルートの完全な URL を取得するだけです。

{{ url('homepage') }}

ホームページ、またはルーティングファイルでそれを呼び出すもの)。

于 2011-07-27T20:18:53.370 に答える
60

新しいリクエストメソッドを使用できますgetSchemeAndHttpHost():

{{ app.request.getSchemeAndHttpHost() }}
于 2013-03-25T20:17:11.727 に答える
16
 <base href="{{ app.request.getSchemeAndHttpHost() }}"/>

またはコントローラーから

$this->container->get('router')->getContext()->getSchemeAndHttpHost()
于 2014-07-23T16:01:07.283 に答える
5

また、js/css/image の URL には、便利な関数 asset() があります。

<img src="{{ asset('image/logo.png') }}"/>

これにより、 で始まる絶対 URL が作成され/ます。

于 2016-04-29T15:10:57.280 に答える
2

変数をテンプレートにグローバルに渡す代わりに、基本テンプレートを定義して、その中に「グローバル部分」をレンダリングできます。基本テンプレートは継承できます。

レンダリング テンプレートの例 symfony のドキュメントから:

<div id="sidebar">
  {% render "AcmeArticleBundle:Article:recentArticles" with {'max': 3} %}
</div>
于 2012-02-01T07:32:47.580 に答える