如何在CakePHP中使用插件javascript脚本加载插件图像?
我的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资产的正确途径是以下形式:
即: > Filepath:App / Plugin / Corporate / webroot / 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,而不管应用程序的安装方式如何. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |