1

Zend_framework (php) で Web アプリケーションを開発しているとき、画像 (css ファイル、js ファイルなど) を含める必要があります。

含めるための解決策は、画像が必要になるたびに絶対パスを指定することでした(ホストで「グローバルライク」パラメーターに保存し、それをホスト上の画像の相対パスと連結しました)。私が理解しているように、このソリューションは高すぎます(各画像がDNSサービスに行くためなど)。相対パスの問題に対するより簡単なソリューションを探しています。

PS 問題は、次の例でよりよく説明できます。「http://myhost.com/」にアクセスすると、画像は正常に表示されます (画像パスは「./images/logo.jpg」でした)。ただし、「 http://myhost.com/users/ 」の URLからは表示されません(表示するには、画像のパスを「./../images/logo.jpg」に変更する必要がありました。

この問題を解決する方法を知っている人がいたら、喜んで聞いてくれます。

ゴレリク。

4

4 に答える 4

8

BaseUrlヘルパーを探しています。

<?php echo $this->baseUrl('images/logo.jpg'); ?>
于 2009-11-14T16:29:47.107 に答える
2

相対パスではなく、site-root-relativeパスを使用する必要があります。

画像パスのドットを削除するだけ./images/logo.jpgです/images/logo.jpg。先頭のドットは、現在のURLからの相対パスになります(したがって、サイトのどこにいるかに応じて変更する必要があります)。ドットがない場合はルートからの相対パスであるため、変更することなくどこでも機能します。

また、この関連する質問とその回答のリンクもご覧ください。

于 2009-11-14T16:50:41.433 に答える
1

私が理解しているように、このソリューションは高すぎます(各画像がDNSサービスに行くためなど)。相対パスの問題に対するより簡単なソリューションを探しています。

私はそれが真実だとは思いません。

ホスト名を含む完全な絶対 URL を使用していたとしても、すべての画像で DNS ルックアップが発生することはありません。クライアント OS (場合によっては、ブラウザーも) がキャッシュしているので安心してください。

もちろん、完全修飾 URL を使用する理由はありません。サーバールートから絶対に移動するだけです:

<?PHP
// somewhere in config.php or similar:
define('SITE_ROOT_URL_PATH','/myapplication');
...
// meanwhile, in some template
<img src="<?php echo SITE_ROOT_URL_PATH . '/images/foo.jpg'; ?>" />

アプリが Web ルートで実行されている場合は、DITE_ROOT_URL_PATH を '' に設定するだけです。

キーストロークを節約するための小さなヘルパー関数を作成することもできます: imgurl('foo.jpg')。

私はこの方法を何年も使用してきましたが、頭痛がしたことはありません。質問に何かが欠けていない限り、これが進むべき道です。

于 2009-11-15T04:12:08.343 に答える