

CakePHPでJavaScriptファイルを使用します。  
その際に、webroot/js/に保存しました。  
そのJavaScriptファイルの中で、画像ファイルを使用するために、画像ファイルのパスを指定する状況が有ります。  
しかし、../img/○○.jpgと指定しても、駄目なようです。  
どのようにして指定すれば良いのでしょうか？  
例えば、Viewで使用するctpファイルであったら、$this->Html->image()を使用して指定することが出来ると思います。  
しかし、JavaScriptファイル内ではどのように指定すればいいのか分かりません。  
よろしくお願いします。


CC BY-SA 3.0
2016-06-13T11:22:59.543
26710
2016-06-14T09:13:18.500
16833
question
cakephp 画像
CakePHP内のJavaScriptファイルで画像ファイルパス指定する方法


指定したい画像ファイルが  
webroot/img  
の中であれば、jsからは

/img/○○.jpg

と指定すればよいです


CC BY-SA 3.0
2016-06-13T12:09:27.370
26713
2016-06-13T12:09:27.370
13404
26710
answer


webroot/js/下に置くJavaScriptファイル内でなんらかのパスを記述した場合、  
それは **そのファイルを読み込んだHTMLファイルのアクセスされたURLから見た** パスとなります。

  * 例1 jsファイル内で`"img/a.png"`  
`http://foo.example.com/user/`
でアクセスされると`http://foo.example.com/user/img/a.png`,  
`http://foo.example.com/user/index/`
でアクセスされると`http://foo.example.com/user/index/img/a.png`

  * 例2 jsファイル内で`"/img/a.png"`  
`http://foo.example.com/user/`
でも`http://foo.example.com/user/index/`でもどちらでアクセスされても`http://foo.example.com/img/a.png`  
ただし、Alias等の機能で **特定のサブディレクトリ下にアプリを配置している場合**
(`http://foo.example.com/appbase/user/`のように)でも`http://foo.example.com/img/a.png`となってしまいます。

おそらく質問者様はサブディレクトリ下で運用されているのではないでしょうか。  
その場合は正規表現などを使って`/appbase/img/a.png`のようにベースとなるディレクトリを補完するか、Viewテンプレート内のスクリプトから処理を呼び出す際に`$this->request->base`を渡してあげる必要があります。


CC BY-SA 3.0
2016-06-14T09:13:18.500
26745
2016-06-14T09:13:18.500
15537
26710
answer