问题如下:在主页面上,所有图像都在其他页面上正确显示,因为相对路径错误,图像丢失。
在我的javascript文件中,我有几个这样的调用:
$("#header").dcCreate({
imgPrefix: "img/b/h/",
fileType: ".png",
expand: 16,
position: "outside"
});
我的第一个想法是更改imgPrefix
,以便它指向图像的绝对网址。有没有更好的方法?
答案 0 :(得分: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
是APP/webroot
IMAGES
是一个指向APP/webroot/img/
的CakePHP定义常量。
答案 1 :(得分:0)
PHP通常不会在.js
文件中解析,因为这会产生各种问题。您可以做的是在$scripts_for_layout
之前声明一个JavaScript变量,其中包含Cake布局中图像的路径。我相信Wordpress会做类似于正确处理AJAX请求的URL。
<?php echo $this->Html->scriptBlock(sprintf('var IMAGE_PATH = "%s";', IMAGES)); ?>
在这种情况下,您可以在外部JavaScript文件中使用IMAGE_PATH
,这些文件通常作为$scripts_for_layout
变量的一部分打印。
您还可以在外部JavaScript文件中声明一个全局变量,其中包含图像的绝对路径,如果这是您需要绝对路径的唯一位置。
答案 2 :(得分: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>