2012-01-16 11 views
0

問題は次のとおりです。メインページでは、すべての画像が他のページに正しく表示されます。私のjavascriptファイルでCakePHP + jQuery DivCornersプラグインで画像URLを正しく処理する方法

は、私はこのようないくつかの呼び出しを持っている:

$("#header").dcCreate({ 
     imgPrefix: "img/b/h/", 
     fileType: ".png", 
     expand: 16, 
     position: "outside" 
    }); 

私の最初のアイデアは、それが画像の絶対URLを指すであろうとそうimgPrefixを変更することです。より良い方法はありますか?

答えて

0
$("#header").dcCreate({ 
     imgPrefix: "<?php echo $this->webroot; ?>img/b/h/", 
     fileType: ".png", 
     expand: 16, 
     position: "outside" 
    }); 

あるいは

$("#header").dcCreate({ 
     imgPrefix: "<?php echo IMAGES; ?>b/h/", 
     fileType: ".png", 
     expand: 16, 
     position: "outside" 
    }); 

それは少しよりポータブルになるだろう。 $this->webrootは、を指すCakePHP定義定数であるAPP/webroot

IMAGESのパスです。

+2

これは.jsファイルでは機能しません。私はファイル拡張子を変更したくありません。 – bancer

0

PHPは通常、.jsファイル内で解析されません。これにより、さまざまな問題が発生します。あなたができることは、$scripts_for_layoutの前にケーキレイアウトの画像へのパスを持つJavaScript変数を宣言することです。私はWordpressがAJAXリクエストのURLを正しく処理するために何か類似していると信じています。普段$scripts_for_layout変数の一部として印刷されている外部JavaScriptファイルにIMAGE_PATHを使用することができ、その場合には

<?php echo $this->Html->scriptBlock(sprintf('var IMAGE_PATH = "%s";', IMAGES)); ?> 

絶対パスが必要な唯一の場所であれば、画像への絶対パスを含む外部JavaScriptファイルにグローバル変数を宣言することもできます。

0

同じ問題がありました。次は私のために働いた。

<?php $folder = $this->webroot; ?> 

<script type="text/javascript"> 
     var folderPath = '<?php echo $folder; ?>'; 

     $("#header").dcCreate({ 
     imgPrefix: folderPath + "img/b/h/", 
     fileType: ".png", 
     expand: 16, 
     position: "outside" 
     }); 
</script> 
関連する問題