3

公式のSymfony2 docsで説明されているように、Twig テンプレートでは、次のようにアセットにリンクできます。

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

これにより、リソースへの正しいパスがレンダリングさlogo.pngれます (Symfony2 アプリが存在するフォルダーによって異なります)。

さて、実行時に (たとえば、オートコンプリートの結果として) 画像をロードする必要がある Javascript コードを使用すると仮定すると、Twig の関数によって提供されるのと同じ結果を Javascript でどのように達成できるassetでしょうか?

いくつかの注意:

  1. FOSJsRoutingBundleのようなものが存在するかもしれませんが、私は本当にそれを無視します!
  2. logo.pngファイルなどの既知のリソースのパスを生成し、変数の文字列を空の文字<script>var known = {{asset('images/logo.png)')}}</script>列に置き換えてパスを取得するという汚い方法が考えられます。しかし、それは汚い方法です!knownimages/logo.png
4

3 に答える 3

4

関数からファイル名を削除するだけでasset、ディレクトリへの絶対パスを取得できます。

<script>
    var imgDir = {{ asset('images/') }}
</script>
于 2013-02-03T22:26:07.543 に答える
1

jsファイルから画像へのパスは不変のままである可​​能性が非常に高いです。これにより、javascriptファイルで「ハードコードされた」パスを使用できるようになります。

例:

web
 |
 |--js
 |   |
 |   |--foo.js
 |
 |--images
 |   |
 |   |--pic.jpg

この場合、foo.jsからpic.jpgにアクセスできます../images/pic.jpg 。小枝ビューでは相対アセットURLがルートURLに依存するため、このソリューションは小枝ビューでは機能しないことに注意してください。これが、この関数が必要な理由ですasset

于 2013-02-03T17:09:36.050 に答える
0

Twig は HTML だけでなく JS ファイルもレンダリングできます。必要なすべてのスクリプトを含む JS ファイルを返す Twig テンプレートを作成できます。その後、このスクリプト ファイルで Twig のすべての機能を使用できます。

于 2013-02-04T14:46:24.180 に答える