使用Cakephp的javascript图像的正确路径

Correct path for images in javascript using Cakephp

本文关键字:路径 javascript Cakephp 使用 图像      更新时间:2023-09-26

我是cakephp的新手,我有一个脚本,我转换为cakephp。我有一个旋转背景,使用4张图片,像这样:

$.backstretch([
    "img/bg/1.jpg",
    "img/bg/2.jpg",
    "img/bg/3.jpg",
    "img/bg/4.jpg"
], {
     fade: 1000,
     duration: 8000
});

当我打开脚本像name_domain.com使用控制器用户和操作登录,它看到所有的图像和所有的工作完美,但当我尝试使用register (controller=>users, action=>signup)图像不加载。但是我把../img....放在这里,而不是在索引中。

我如何正确地链接这些图像。我也尝试了"/img",但不工作。

默认声明一个javascript变量。ctp

var IMAGE_HOST = "<?php echo $this->webroot.'/img/'; ?>";

现在你也可以在javascript文件中使用了

<script>
$.backstretch([
    IMAGE_HOST + "bg/1.jpg",
    IMAGE_HOST + "bg/2.jpg",
    IMAGE_HOST + "bg/3.jpg",
    IMAGE_HOST + "bg/4.jpg"
], {
     fade: 1000,
     duration: 8000
});

希望它有帮助…!!

尝试使用像这样的完整路径

$this->webroot.'img/myimage.jpg'

$this->Html->url('/img/myimage.jpg')

<?php Router::url('/img/myimage.jpg')?>

一种方法是设置一个JavaScript变量,然后在后续脚本中使用它。例如,在app/Layouts/default中。ctp文件,您可以:

<script>
    var img_path = "<?php echo Configure::read('App.imageBaseUrl'); ?>";
</script>

然后在你的脚本中使用它,像这样:

<script>
    $.backstretch([
        img_path + "/bg/1.jpg",
        img_path + "/bg/2.jpg",
        img_path + "/bg/3.jpg",
        img_path + "/bg/4.jpg"
    ], {
         fade: 1000,
         duration: 8000
    });
</script>

我建议在布局中保存webbroot path,使其作用域保持全局

<div id="webroot" class="hide" data-url="<?php echo $this->webroot;?>"></div>

然后使用backstretch js作为

 var webroot = $('#webroot').attr('data-url');
    $.backstretch([
        webroot+ "img/bg/1.jpg",
        webroot+ "img/bg/2.jpg",
        webroot+ "img/bg/3.jpg",
        webroot+ img/bg/4.jpg"
        ], {
          fade: 1000,
          duration: 8000
});

当你使用不同的动作与webroot元素具有相同的布局时,它将保持正确的图像路径