加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

如何在CakePHP中使用插件javascript脚本加载插件图像?

发布时间:2020-12-13 16:45:02 所属栏目:PHP教程 来源:网络整理
导读:我的Cake PHP插件中有一个(javascript)脚本,它在当前查看的文档中创建了一个img标签.问题是,到目前为止,每次尝试提供有效的图像源都失败了.该插件位于CakePHP库(不是CakePHP应用程序)的插件目录中,因为我们将它用于几个具有大量公共空间的独立应用程序. 图像
我的Cake PHP插件中有一个(javascript)脚本,它在当前查看的文档中创建了一个img标签.问题是,到目前为止,每次尝试提供有效的图像源都失败了.该插件位于CakePHP库(不是CakePHP应用程序)的插件目录中,因为我们将它用于几个具有大量公共空间的独立应用程序.

图像位于/ cake / plugins / Corporate / webroot / img中.

(javascript)脚本位于/ cake / plugins / Corporate / webroot / js中.

从脚本到图像的相对路径不起作用(../img/image.png). CakePHP路由路径(/Corporate/img/image.png)也不起作用,如果我预先插入插件名称则独立.

解决方法

使用正确的路径

在PluginName插件中获取Webroot资产的正确途径是以下形式:

/plugin_name/path

即:

> Filepath:App / Plugin / Corporate / webroot / img / image.png
>网址:/corporate/img/image.png

在CakePHP的早期版本中,资产调度是自动的,而在2.2 asset dispatching must be explicitly enabled中.

处理插件资产的常规方法是不使用资产调度过滤器,并将文件复制(或符号链接)到与应用程序webroot相对应的路径中,即:

cd App
cp -R Plugin/Corporate/webroot webroot/corporate

这意味着请求的URL直接映射到应用程序webroot文件夹中的文件 – 在提供这些文件时没有调用php逻辑,除了其他好处之外,还提供服务此类资产significantly faster.

处理javascript中的路径

如果总是将应用程序作为域的根目录(http://example.com)安装,那么绝对没有复杂性 – 只需参考图像的相对路径:

var imagePath = '/corporate/img/image.png';

但是,如果应用程序的根是可变的(http://example.com/,http://exmaple.com/sub/folder/,http:// localhost / someproject /) – 有必要告诉javascript到底是什么考虑应用程序的根.例如,将以下内容放在布局文件中:

<head>
    ...
    <script>ROOT = '<?= $this->Html->url('/'); ?>';</script>
</head>
<body>
    <?= $this->fetch('content'); ?>
    ...
</body>

通过这种方式,javascript可以在任何地方引用全局ROOT来知道根URL是什么,如下所示:

var imagePath = ROOT . 'corporate/img/image.png';

这使得可以使用相同的javascript,而不管应用程序的安装方式如何.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读