2

Twig テンプレート エンジンでテンプレートの保存場所に関連するパスを使用する方法があるかどうか疑問に思っています。

シナリオは次のとおりです。

アプリケーションが fileadmin/myApplication にある Typo3 Web サイトがあります。テンプレート エンジンとして Twig を使用して、JSON ファイルから動的に読み込まれる多言語コンテンツをレンダリングしています。私のテンプレート ファイルのいくつかには、Typo3 の性質上、fileadmin/myApplication/img/... の src-path が必要な画像へのパスが含まれています。

ここで、アプリケーションの新しいバージョンをテストする場合、テンプレート ファイル内のイメージへのパスを変更せずに、ディレクトリ fileadmin/myApplication2.0 を作成できるようにしたいと考えています。

相対パスをサーバー ファイル パスに変換するテンプレート エンジン (raintpl など、このリンクを参照) があります。Twigで同じ効果を達成する簡単な方法はありますか?

例えば

templates/template.html 
img/logo.png

出力

<img src="fileadmin/myApplication2.0/img/logo.png">

これは、rain.tpl が行う方法です。

 WYSIWYG - Path replace
This cool feature allows designers to create templates as regular HTML with images and styles with relative paths, RainTPL replaces automatically these paths with the correct server paths.

Absolute paths and paths ending with # will be not changed.

<link href="style.css" type="text/css" rel="stylesheet">
<img src="img/logo.gif">

Output html:

<link href="tpl/style.css" type="text/css" rel="stylesheet">
<img src="tpl/img/logo.gif">

Note: if you set raintpl::$base_url, RainTPL will replace the path with raintpl::$base_url.
4

3 に答える 3

3

属性のパスはsrc相対URLであり、サーバー上のファイルシステムへの相対ファイルパスではなく、ディレクトリ内でファイルを整理する方法です。

相対URLは、テンプレートが含まれる/存在するドキュメントのベースURLに解決されます。したがって、相対URLを使用できますが、適切に機能させるには、それらが何に関連しているかを知る必要があります。

あなたの場合、簡単な解決策は使用することかもしれません

<img src="/img/logo.png">

Webサイトがweb-rootにある場合。

もう1つの方法は、要求されたURLパスに従って(相対)URLを構築するように注意するテンプレート関数を用意することです。もう1つのアプローチは、テンプレート全体に<base>hrefDocsをハードエンコードすることです。

もう1つの方法は、レンダリングされたテンプレートの出力を取得し、リンクを解析してそれらを適合させることです。

ただし、重要なのは、要求されたURLパスを具体的に把握し、テンプレート(ブロック)がどのように使用されているかを知る必要があることです。

于 2011-08-19T14:20:37.903 に答える
2

ジョセフが言ったように絶対的な道で:

<img src="/img/logo.png">

あなたのウェブサイトがルートURLにある場合にのみ画像を見ることができます

http://localhost/

動作しません

http://localhost/myApp/

したがって、この場合、そのホストを作成する必要があります

http://myApp/

テンプレートは、ブラウザまたはHTMLエディタでどのように表示されるかを確認できる場合はWYSIWYGであるため、基本的に相対パスを使用するすべてのテンプレートです。

RainTPLは、テンプレートの相対パスを正しいサーバーパス(相対パスまたは絶対パス)に自動的に置き換えるという素晴らしいアイデアを持っていたため、テンプレートがどのように見えるかをすぐに確認できます。

WYSIWYGテンプレートを使用するもう1つの非常に優れた方法は、相対パスを使用できる<base href = "http:// localhost /myApp/">タグです。唯一の問題は、クロスブラウジングとJavascriptです。これらすべてで同じように機能するかどうかは、あまり明確ではないためです。

于 2011-09-28T14:20:53.093 に答える
1
<img src="{{ asset('img/my_image.gif') }}" alt="something" />

アセット パスは /web ディレクトリに解決されます。私の例では、イメージの完全なプロジェクト パスは次のようになります。

Project/web/img/my_image.gif

このメソッドを使用するには、.twig 拡張子を使用する必要があります。

于 2013-07-09T23:50:32.220 に答える